=$7$r-0r(yq3$DfKk9G
z@ZS}n^TEbJ=xEFo%A*4(*#aP17?y@U^%7KLYjiYb3NeGmR4Jk=WxB;+svP6CUgv1c
z6smGyy7^%G%S?ADOnx2TZ_DMt9ED~!3K#_z6)395I^F;0-}nEEMdryUU=&y@1(?-!
zyB(yY@75eSx@&D5_c+LCU8Yc$;H0l(>CjcYi$fabY;q7CjhRA>pqW1cQU)^_1%6b4
EFIywYZ~y=R
literal 0
HcmV?d00001
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/CustomCalendar.vue b/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/CustomCalendar.vue
new file mode 100644
index 00000000..d0ba6214
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/CustomCalendar.vue
@@ -0,0 +1,31 @@
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.js b/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.vue
new file mode 100644
index 00000000..6ddea454
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/calendar/main.vue
@@ -0,0 +1,26 @@
+
+
+
+ props.onChange(ev)" />
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/CustomDateInput.vue b/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/CustomDateInput.vue
new file mode 100644
index 00000000..be84982b
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/CustomDateInput.vue
@@ -0,0 +1,62 @@
+
+
+ ,
+ ,
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.js b/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.vue
new file mode 100644
index 00000000..df4a55a9
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/dateinput/main.vue
@@ -0,0 +1,30 @@
+
+
+
+ props.onChange(e)" />
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/CustomPopup.vue b/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/CustomPopup.vue
new file mode 100644
index 00000000..cb621a3f
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/CustomPopup.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.js b/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.vue
new file mode 100644
index 00000000..3bba239c
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/custom/popup/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/default/show/main.js b/vue-options-api-demos/dateinputs/datetimepicker/default/show/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/default/show/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/default/show/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/default/show/main.vue
new file mode 100644
index 00000000..3e01a2ab
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/default/show/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
DateTimePicker with default show
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/default/value/main.js b/vue-options-api-demos/dateinputs/datetimepicker/default/value/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/default/value/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/default/value/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/default/value/main.vue
new file mode 100644
index 00000000..f802a24d
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/default/value/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
DateTimePicker with default value
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/disabled/main.js b/vue-options-api-demos/dateinputs/datetimepicker/disabled/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/disabled/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/disabled/main.vue
new file mode 100644
index 00000000..529543d6
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/disabled/main.vue
@@ -0,0 +1,16 @@
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/events/main.js b/vue-options-api-demos/dateinputs/datetimepicker/events/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/events/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/events/main.vue
new file mode 100644
index 00000000..98b360bb
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/events/main.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
{{"DateTimePicker Events"}}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.js b/vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.vue
new file mode 100644
index 00000000..984f0adf
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/floating-label/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/focused/main.js b/vue-options-api-demos/dateinputs/datetimepicker/focused/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/focused/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/focused/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/focused/main.vue
new file mode 100644
index 00000000..e0fdce7d
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/focused/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/formats/main.js b/vue-options-api-demos/dateinputs/datetimepicker/formats/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/formats/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/formats/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/formats/main.vue
new file mode 100644
index 00000000..e24d8682
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/formats/main.vue
@@ -0,0 +1,61 @@
+
+
+
+
Select a long time:
+
+
+
+
+
Select a short time:
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.js b/vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.vue
new file mode 100644
index 00000000..7a893bd5
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/basic/main.vue
@@ -0,0 +1,60 @@
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.js b/vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.vue
new file mode 100644
index 00000000..88e8844e
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/custom-message/main.vue
@@ -0,0 +1,66 @@
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.js b/vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.vue
new file mode 100644
index 00000000..899cd0a6
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/disable-styles/main.vue
@@ -0,0 +1,95 @@
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.js b/vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.vue
new file mode 100644
index 00000000..b5ba8c44
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/forms/override/main.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+ Please select the time of your flight:
+
+ Departure
+
+
+
+ Arrival
+
+
+
+ Additional Comments
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.js b/vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.vue
new file mode 100644
index 00000000..a71ff6fe
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/input-mode/main.vue
@@ -0,0 +1,50 @@
+
+
+
+
+ inputmode=text (default)
+
+
+
+
+
+
+ inputmode=none
+ (the user can only pick a value from the popup)
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/json/main.js b/vue-options-api-demos/dateinputs/datetimepicker/json/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/json/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/json/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/json/main.vue
new file mode 100644
index 00000000..b585a9b1
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/json/main.vue
@@ -0,0 +1,42 @@
+
+
+
+
TimePicker value: {{`${departureTime}`}}
+
+
+ Select Birthdate:
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.js b/vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.vue
new file mode 100644
index 00000000..084fc7fb
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/keyboard/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
(use Alt+↓
to open the calendar, ←
and →
to navigate, ↑
to increment and ↓
to decrement the value)
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.js b/vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.vue
new file mode 100644
index 00000000..c1c5403e
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/overview/basic/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.js b/vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.vue
new file mode 100644
index 00000000..c702a1d8
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/placeholders/main.vue
@@ -0,0 +1,40 @@
+
+
+
+
Full-length format description:
+
+
+
+
+
Narrow-length format description:
+
+
+
+
+
Short-length format description:
+
+
+
+
+
Display defined format:
+
+
+
+
+
Custom defined format descriptions
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.js b/vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.vue
new file mode 100644
index 00000000..4b8fc083
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/ranges/date/main.vue
@@ -0,0 +1,27 @@
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.js b/vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.vue b/vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.vue
new file mode 100644
index 00000000..3d62f7b8
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/datetimepicker/ranges/time/main.vue
@@ -0,0 +1,27 @@
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/floating-label/main.js b/vue-options-api-demos/dateinputs/floating-label/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/floating-label/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/floating-label/main.vue b/vue-options-api-demos/dateinputs/floating-label/main.vue
new file mode 100644
index 00000000..57645512
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/floating-label/main.vue
@@ -0,0 +1,91 @@
+
+
+
+
DateInput
+
+
+
+
DatePicker
+
+
+
+
+
TimePicker
+
+
+
+
+
DateTimePicker
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/dateinputs/globalization/es.json b/vue-options-api-demos/dateinputs/globalization/es.json
new file mode 100644
index 00000000..7fd085c9
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/globalization/es.json
@@ -0,0 +1,31 @@
+{
+ "datepicker": {
+ "toggleCalendar": "Alternar calendario"
+ },
+ "calendar": {
+ "today": "Hoy"
+ },
+ "dateinput": {
+ "increment": "Incrementar valor",
+ "decrement": "Disminuir valor"
+ },
+ "datetimepicker": {
+ "date": "Fecha",
+ "time": "Hora",
+ "cancel": "Cancelar",
+ "set": "Conjunto"
+ },
+ "timepicker": {
+ "set": "Conjunto",
+ "cancel": "Cancelar",
+ "now": "Ahora",
+ "selectNow": "Seleccionar ahora",
+ "toggleTimeSelector": "Selector de tiempo de alternancia",
+ "toggleClock": "Reloj de palanca"
+ },
+ "daterangepicker": {
+ "swapStartEnd": "Swap start and end values",
+ "start": "Comienzo",
+ "end": "Fin"
+ }
+}
diff --git a/vue-options-api-demos/dateinputs/globalization/main.js b/vue-options-api-demos/dateinputs/globalization/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/globalization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/globalization/main.vue b/vue-options-api-demos/dateinputs/globalization/main.vue
new file mode 100644
index 00000000..d8517c95
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/globalization/main.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
Locale:
+
+
+
+
+
+
DateInput
+
+
+
DatePicker
+
+
+
TimePicker
+
+
DateTimePicker
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.js b/vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.vue b/vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.vue
new file mode 100644
index 00000000..cb893011
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/multiviewcalendar/keyboard/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/DateInputsStyleConfigurator.vue b/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/DateInputsStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/DateInputsStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.js b/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.vue b/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.vue
new file mode 100644
index 00000000..2f2cfa0c
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/appearance/configurator/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.js b/vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.vue b/vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..12347c30
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/appearance/fill-mode/main.vue
@@ -0,0 +1,95 @@
+
+
+
+
+ Flat:
+
+
+
+ Solid:
+
+
+
+ Outline:
+
+
+
+
+
+ Custom fill mode:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.js b/vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.vue b/vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.vue
new file mode 100644
index 00000000..df6675d7
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/appearance/rounded/main.vue
@@ -0,0 +1,111 @@
+`
+
+
+
+ Small roundness:
+
+
+
+ Medium roundness:
+
+
+
+ Large roundness:
+
+
+
+
+
+ Full roundness:
+
+
+
+ Custom roundness:
+
+
+
+
+
+
+
+
+`
\ No newline at end of file
diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/size/main.js b/vue-options-api-demos/dateinputs/timepicker/appearance/size/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/appearance/size/main.vue b/vue-options-api-demos/dateinputs/timepicker/appearance/size/main.vue
new file mode 100644
index 00000000..34982847
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/appearance/size/main.vue
@@ -0,0 +1,92 @@
+
+
+
+
+ Small:
+
+
+
+ Medium:
+
+
+
+ Large:
+
+
+
+
+ Custom size:
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/controlled-show/main.js b/vue-options-api-demos/dateinputs/timepicker/controlled-show/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/controlled-show/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/controlled-show/main.vue b/vue-options-api-demos/dateinputs/timepicker/controlled-show/main.vue
new file mode 100644
index 00000000..8e0736aa
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/controlled-show/main.vue
@@ -0,0 +1,39 @@
+
+
+
+
Controlled TimePicker
+
+
Toggle
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/controlled-value/main.js b/vue-options-api-demos/dateinputs/timepicker/controlled-value/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/controlled-value/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/controlled-value/main.vue b/vue-options-api-demos/dateinputs/timepicker/controlled-value/main.vue
new file mode 100644
index 00000000..0f1a58a8
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/controlled-value/main.vue
@@ -0,0 +1,34 @@
+
+
+
+
The value is: {{`${value}`}}
+
+
+
Controlled TimePicker
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/CustomDateInput.vue b/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/CustomDateInput.vue
new file mode 100644
index 00000000..99e2b143
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/CustomDateInput.vue
@@ -0,0 +1,46 @@
+
+
+ ,
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.js b/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.vue b/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.vue
new file mode 100644
index 00000000..d2584d99
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/custom/dateinput/main.vue
@@ -0,0 +1,29 @@
+
+
+
+ props.onChange(e)" />
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/custom/popup/CustomPopup.vue b/vue-options-api-demos/dateinputs/timepicker/custom/popup/CustomPopup.vue
new file mode 100644
index 00000000..135e6d71
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/custom/popup/CustomPopup.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/custom/popup/main.js b/vue-options-api-demos/dateinputs/timepicker/custom/popup/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/custom/popup/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/custom/popup/main.vue b/vue-options-api-demos/dateinputs/timepicker/custom/popup/main.vue
new file mode 100644
index 00000000..6fab3c43
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/custom/popup/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/default-show/main.js b/vue-options-api-demos/dateinputs/timepicker/default-show/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/default-show/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/default-show/main.vue b/vue-options-api-demos/dateinputs/timepicker/default-show/main.vue
new file mode 100644
index 00000000..5490e9b8
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/default-show/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
TimePicker with default show
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/default-value/main.js b/vue-options-api-demos/dateinputs/timepicker/default-value/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/default-value/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/default-value/main.vue b/vue-options-api-demos/dateinputs/timepicker/default-value/main.vue
new file mode 100644
index 00000000..4f056885
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/default-value/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
TimePicker with default value
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/disabled/main.js b/vue-options-api-demos/dateinputs/timepicker/disabled/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/disabled/main.vue b/vue-options-api-demos/dateinputs/timepicker/disabled/main.vue
new file mode 100644
index 00000000..1de15fae
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/disabled/main.vue
@@ -0,0 +1,16 @@
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/events/main.js b/vue-options-api-demos/dateinputs/timepicker/events/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/events/main.vue b/vue-options-api-demos/dateinputs/timepicker/events/main.vue
new file mode 100644
index 00000000..aee2c00d
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/events/main.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
{{"TimePicker Events"}}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/floating-label/main.js b/vue-options-api-demos/dateinputs/timepicker/floating-label/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/floating-label/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/floating-label/main.vue b/vue-options-api-demos/dateinputs/timepicker/floating-label/main.vue
new file mode 100644
index 00000000..a8ccf490
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/floating-label/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/dateinputs/timepicker/formats/main.js b/vue-options-api-demos/dateinputs/timepicker/formats/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/formats/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/formats/main.vue b/vue-options-api-demos/dateinputs/timepicker/formats/main.vue
new file mode 100644
index 00000000..6ab289ed
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/formats/main.vue
@@ -0,0 +1,55 @@
+
+
+
+
Select a long time:
+
+
+
+
+
Select a short time:
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/basic/main.js b/vue-options-api-demos/dateinputs/timepicker/forms/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/forms/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/basic/main.vue b/vue-options-api-demos/dateinputs/timepicker/forms/basic/main.vue
new file mode 100644
index 00000000..51fae1d8
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/forms/basic/main.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+ Please select the time of your flight:
+
+ Departure
+
+
+
+ Arrival
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.js b/vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.vue b/vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.vue
new file mode 100644
index 00000000..ca93269f
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/forms/custom-message/main.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+ Please select the time of your flight:
+
+ Departure
+
+
+
+ Arrival
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.js b/vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.vue b/vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.vue
new file mode 100644
index 00000000..047f315c
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/forms/disable-styles/main.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+ Please select the time of your flight:
+
+ Departure
+
+
+
+ Arrival
+
+
+
+ Additional Comments
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/override/main.js b/vue-options-api-demos/dateinputs/timepicker/forms/override/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/forms/override/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/forms/override/main.vue b/vue-options-api-demos/dateinputs/timepicker/forms/override/main.vue
new file mode 100644
index 00000000..f2a3010b
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/forms/override/main.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+ Please select the time of your flight:
+
+ Departure
+
+
+
+ Arrival
+
+
+
+ Additional Comments
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/incremental/main.js b/vue-options-api-demos/dateinputs/timepicker/incremental/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/incremental/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/incremental/main.vue b/vue-options-api-demos/dateinputs/timepicker/incremental/main.vue
new file mode 100644
index 00000000..ed5cefe9
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/incremental/main.vue
@@ -0,0 +1,31 @@
+
+
+
Select a time:
+
+
(↑ to increment and ↓ to decrement the value)
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/input-mode/main.js b/vue-options-api-demos/dateinputs/timepicker/input-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/input-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/dateinputs/timepicker/input-mode/main.vue b/vue-options-api-demos/dateinputs/timepicker/input-mode/main.vue
new file mode 100644
index 00000000..b38debd2
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/input-mode/main.vue
@@ -0,0 +1,50 @@
+
+
+
+
+ inputmode=text (default)
+
+
+
+
+
+
+ inputmode=none
+ (the user can only pick a value from the popup)
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/json/main.js b/vue-options-api-demos/dateinputs/timepicker/json/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/json/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/json/main.vue b/vue-options-api-demos/dateinputs/timepicker/json/main.vue
new file mode 100644
index 00000000..b41b3e0d
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/json/main.vue
@@ -0,0 +1,42 @@
+
+
+
+
TimePicker value: {{`${departureTime}`}}
+
+
+ Select Birthdate:
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/keyboard/main.js b/vue-options-api-demos/dateinputs/timepicker/keyboard/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/keyboard/main.vue b/vue-options-api-demos/dateinputs/timepicker/keyboard/main.vue
new file mode 100644
index 00000000..64ec68d1
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/keyboard/main.vue
@@ -0,0 +1,16 @@
+
+
+
+
(use Alt+↓
to open the time list, ↑
to increment and ↓
to decrement the value)
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/overview/basic/main.js b/vue-options-api-demos/dateinputs/timepicker/overview/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/overview/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/overview/basic/main.vue b/vue-options-api-demos/dateinputs/timepicker/overview/basic/main.vue
new file mode 100644
index 00000000..9a2103c1
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/overview/basic/main.vue
@@ -0,0 +1,17 @@
+
+
+
+
(use Alt+↓
to open the time list, Tab to move to the next time section in the popup,
+ ↑
to increment and ↓
to decrement the value)
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/placeholders/main.js b/vue-options-api-demos/dateinputs/timepicker/placeholders/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/placeholders/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/placeholders/main.vue b/vue-options-api-demos/dateinputs/timepicker/placeholders/main.vue
new file mode 100644
index 00000000..db0fa4be
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/placeholders/main.vue
@@ -0,0 +1,39 @@
+
+
+
+
Full-length format description:
+
+
+
+
+
Narrow-length format description:
+
+
+
+
+
Short-length format description:
+
+
+
+
+
Display defined format:
+
+
+
+
+
Custom defined format descriptions
+
+
+
+
+
diff --git a/vue-options-api-demos/dateinputs/timepicker/time-ranges/main.js b/vue-options-api-demos/dateinputs/timepicker/time-ranges/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/time-ranges/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dateinputs/timepicker/time-ranges/main.vue b/vue-options-api-demos/dateinputs/timepicker/time-ranges/main.vue
new file mode 100644
index 00000000..9a07d70f
--- /dev/null
+++ b/vue-options-api-demos/dateinputs/timepicker/time-ranges/main.vue
@@ -0,0 +1,29 @@
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/dialog/action-buttons/main.js b/vue-options-api-demos/dialogs/dialog/action-buttons/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/action-buttons/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/dialog/action-buttons/main.vue b/vue-options-api-demos/dialogs/dialog/action-buttons/main.vue
new file mode 100644
index 00000000..48980bb2
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/action-buttons/main.vue
@@ -0,0 +1,41 @@
+
+
+
+ Open Dialog
+
+
+ This action cannot be undone.
+
+ Cancel
+ Delete
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/dialog/dimetions/main.js b/vue-options-api-demos/dialogs/dialog/dimetions/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/dimetions/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/dialog/dimetions/main.vue b/vue-options-api-demos/dialogs/dialog/dimetions/main.vue
new file mode 100644
index 00000000..8848c6d9
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/dimetions/main.vue
@@ -0,0 +1,41 @@
+
+
+
+ Open Dialog
+
+
+ Are you sure you want to continue?
+
+ No
+ Yes
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/dialog/keyboard/main.js b/vue-options-api-demos/dialogs/dialog/keyboard/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/dialog/keyboard/main.vue b/vue-options-api-demos/dialogs/dialog/keyboard/main.vue
new file mode 100644
index 00000000..2e2603d5
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/keyboard/main.vue
@@ -0,0 +1,112 @@
+
+
+
+ Open Dialog
+
+
+
+ Add Delivery Address
+
+
+
+
+ Street:
+
+
+
+
+
+ City:
+
+
+
+
+
+ State:
+
+
+
+
+
+ Zip:
+
+
+
+
+
+ Verify Address
+ Add
+ Cancel
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/dialog/overview/main.js b/vue-options-api-demos/dialogs/dialog/overview/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/dialog/overview/main.vue b/vue-options-api-demos/dialogs/dialog/overview/main.vue
new file mode 100644
index 00000000..383a17c2
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/overview/main.vue
@@ -0,0 +1,37 @@
+
+
+
+ Open Dialog
+
+
+ Are you sure you want to continue?
+
+ No
+ Yes
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/dialog/rtl/main.js b/vue-options-api-demos/dialogs/dialog/rtl/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/rtl/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/dialog/rtl/main.vue b/vue-options-api-demos/dialogs/dialog/rtl/main.vue
new file mode 100644
index 00000000..8a37b3a2
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/rtl/main.vue
@@ -0,0 +1,37 @@
+
+
+
+ Open Dialog
+
+
+ Are you sure you want to continue?
+
+ No
+ Yes
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/dialog/title/basic/main.js b/vue-options-api-demos/dialogs/dialog/title/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/title/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/dialog/title/basic/main.vue b/vue-options-api-demos/dialogs/dialog/title/basic/main.vue
new file mode 100644
index 00000000..0ff6a635
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/title/basic/main.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/dialog/title/no-title/main.js b/vue-options-api-demos/dialogs/dialog/title/no-title/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/title/no-title/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/dialog/title/no-title/main.vue b/vue-options-api-demos/dialogs/dialog/title/no-title/main.vue
new file mode 100644
index 00000000..34ed020a
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/title/no-title/main.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
Enter your e-mail below to unlock.
+
+
+
+
+ GET MY $10 OFF
+
+
No thanks!
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/dialog/title/title-template/main.js b/vue-options-api-demos/dialogs/dialog/title/title-template/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/title/title-template/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/dialog/title/title-template/main.vue b/vue-options-api-demos/dialogs/dialog/title/title-template/main.vue
new file mode 100644
index 00000000..f49291bb
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/title/title-template/main.vue
@@ -0,0 +1,27 @@
+
+
+
+ A sample print dialog.
+
+
+ Print this page
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/dialog/visibility/main.js b/vue-options-api-demos/dialogs/dialog/visibility/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/visibility/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/dialog/visibility/main.vue b/vue-options-api-demos/dialogs/dialog/visibility/main.vue
new file mode 100644
index 00000000..8aa539d3
--- /dev/null
+++ b/vue-options-api-demos/dialogs/dialog/visibility/main.vue
@@ -0,0 +1,37 @@
+
+
+
+ Open Dialog
+
+
+ Are you sure you want to continue?
+
+ No
+ Yes
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/overview/main.js b/vue-options-api-demos/dialogs/overview/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/overview/main.vue b/vue-options-api-demos/dialogs/overview/main.vue
new file mode 100644
index 00000000..e89bd754
--- /dev/null
+++ b/vue-options-api-demos/dialogs/overview/main.vue
@@ -0,0 +1,51 @@
+
+
+
+ Open Dialog
+ Open Window
+
+
+
+ Are you sure you want to continue?
+
+
+ No
+ Yes
+
+
+
+ Additional info - you can drag and resize the me!
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/window/basic/main.js b/vue-options-api-demos/dialogs/window/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/window/basic/main.vue b/vue-options-api-demos/dialogs/window/basic/main.vue
new file mode 100644
index 00000000..d74e3fb4
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/basic/main.vue
@@ -0,0 +1,50 @@
+
+
+
{{visible ? 'Close': 'Open'}} Window
+
+
+
+ User Details
+
+
+ First Name
+
+
+
+ Last Name
+
+
+
+
+
+ Cancel
+ Submit
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/window/controlled/main.js b/vue-options-api-demos/dialogs/window/controlled/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/controlled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/window/controlled/main.vue b/vue-options-api-demos/dialogs/window/controlled/main.vue
new file mode 100644
index 00000000..39c39b50
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/controlled/main.vue
@@ -0,0 +1,63 @@
+
+
+ {{visible ? 'Close': 'Open'}} Window
+
+ Set width to 200
+
+ Set width to 500
+
+ Controlled mode
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/window/dimensions/main.js b/vue-options-api-demos/dialogs/window/dimensions/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/dimensions/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/window/dimensions/main.vue b/vue-options-api-demos/dialogs/window/dimensions/main.vue
new file mode 100644
index 00000000..b3dda5b0
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/dimensions/main.vue
@@ -0,0 +1,38 @@
+
+
+
{{visible ? 'Close': 'Open'}} Window
+
+ Armchair 402
+
+ Alvar Aalto is one of the greatest names in modern architecture and design. Glassblowers at the iittala factory still meticulously handcraft the legendary vases that are variations on one theme, fluid organic shapes that let the end user decide the use. Interpretations of the shape in new colors and materials add to the growing Alvar Aalto Collection that remains true to his original design.
+ Born Hugo Alvar Henrik Aalto (February 3, 1898 - May 11, 1976) in Kuortane, Finland, was noted for his humanistic approach to modernism. He studied architecture at the Helsinki University of Technology from 1916 to 1921. In 1924 he married architect Aino Marsio.
+ Alvar Aalto was one of the first and most influential architects of the Scandinavian modern movement, and a member of the Congres Internationaux d'Architecture Moderne. Major architectural works include the Finlandia Hall in Helsinki, Finland, and the campus of Helsinki University of Technology.
+ Source: www.aalto.com
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/window/dragging/main.js b/vue-options-api-demos/dialogs/window/dragging/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/dragging/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/window/dragging/main.vue b/vue-options-api-demos/dialogs/window/dragging/main.vue
new file mode 100644
index 00000000..a53d7c20
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/dragging/main.vue
@@ -0,0 +1,38 @@
+
+
+ {{visible ? 'Close': 'Open'}} Window
+
+ Enable/Disable dragging
+
+
+ I can be dragged!
+
+
+ I cannot be dragged!
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/window/events/main.js b/vue-options-api-demos/dialogs/window/events/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/window/events/main.vue b/vue-options-api-demos/dialogs/window/events/main.vue
new file mode 100644
index 00000000..a6b2b945
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/events/main.vue
@@ -0,0 +1,58 @@
+
+
+
{{visible ? 'Close': 'Open'}} Window
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/window/hide-buttons/main.js b/vue-options-api-demos/dialogs/window/hide-buttons/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/hide-buttons/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/window/hide-buttons/main.vue b/vue-options-api-demos/dialogs/window/hide-buttons/main.vue
new file mode 100644
index 00000000..d0d18747
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/hide-buttons/main.vue
@@ -0,0 +1,61 @@
+
+
+
+ {{ visible ? "Close" : "Open" }} Window
+
+
+
+
+ User Details
+
+
+ First Name
+
+
+
+ Last Name
+
+
+
+
+
+ Cancel
+
+ Submit
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/window/minimize-fullscreen/main.js b/vue-options-api-demos/dialogs/window/minimize-fullscreen/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/minimize-fullscreen/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/window/minimize-fullscreen/main.vue b/vue-options-api-demos/dialogs/window/minimize-fullscreen/main.vue
new file mode 100644
index 00000000..343a3f06
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/minimize-fullscreen/main.vue
@@ -0,0 +1,43 @@
+
+
+ Minimize
+ Full screen
+ Default
+
+ Minimize
+ Full screen
+ Default
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/window/positioning/main.js b/vue-options-api-demos/dialogs/window/positioning/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/positioning/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/window/positioning/main.vue b/vue-options-api-demos/dialogs/window/positioning/main.vue
new file mode 100644
index 00000000..b8376468
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/positioning/main.vue
@@ -0,0 +1,30 @@
+
+
+ {{visible ? 'Close': 'Open'}} Window
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/window/resizable/main.js b/vue-options-api-demos/dialogs/window/resizable/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/resizable/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/window/resizable/main.vue b/vue-options-api-demos/dialogs/window/resizable/main.vue
new file mode 100644
index 00000000..b2708be6
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/resizable/main.vue
@@ -0,0 +1,38 @@
+
+
+ {{visible ? 'Close': 'Open'}} Window
+
+ Enable/Disable resizing
+
+
+ I can be resized!
+
+
+ I cannot be resized!
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/window/title-basic/main.js b/vue-options-api-demos/dialogs/window/title-basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/title-basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/window/title-basic/main.vue b/vue-options-api-demos/dialogs/window/title-basic/main.vue
new file mode 100644
index 00000000..43402bf7
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/title-basic/main.vue
@@ -0,0 +1,32 @@
+
+
+ {{visible ? 'Close': 'Open'}} Window
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/window/title-component/Title.vue b/vue-options-api-demos/dialogs/window/title-component/Title.vue
new file mode 100644
index 00000000..acbe201e
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/title-component/Title.vue
@@ -0,0 +1,6 @@
+
+
+ Print this page
+
+
+
diff --git a/vue-options-api-demos/dialogs/window/title-component/main.js b/vue-options-api-demos/dialogs/window/title-component/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/title-component/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/window/title-component/main.vue b/vue-options-api-demos/dialogs/window/title-component/main.vue
new file mode 100644
index 00000000..53a63eff
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/title-component/main.vue
@@ -0,0 +1,35 @@
+
+
+ {{visible ? 'Close': 'Open'}} Window
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dialogs/window/title-no/main.js b/vue-options-api-demos/dialogs/window/title-no/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/title-no/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dialogs/window/title-no/main.vue b/vue-options-api-demos/dialogs/window/title-no/main.vue
new file mode 100644
index 00000000..7541a79f
--- /dev/null
+++ b/vue-options-api-demos/dialogs/window/title-no/main.vue
@@ -0,0 +1,29 @@
+
+
+ {{visible ? 'Close': 'Open'}} Window
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/DropDownStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/DropDownStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.js b/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.vue b/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.vue
new file mode 100644
index 00000000..7d4a1af2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/configurator/main.vue
@@ -0,0 +1,55 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.js b/vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.vue b/vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..3f4f8bea
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/fill-mode/main.vue
@@ -0,0 +1,95 @@
+
+
+
+
+ Flat:
+
+
+
+ Solid:
+
+
+
+ Outline:
+
+
+
+
+
+ Custom fill mode:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.js b/vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.vue b/vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.vue
new file mode 100644
index 00000000..ba9ac58c
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/rounded/main.vue
@@ -0,0 +1,110 @@
+
+
+
+
+ Small roundness:
+
+
+
+ Medium roundness:
+
+
+
+ Large roundness:
+
+
+
+
+
+ Full roundness:
+
+
+
+ Custom roundness:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.js b/vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.vue b/vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.vue
new file mode 100644
index 00000000..a26c433b
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/appearance/size/main.vue
@@ -0,0 +1,92 @@
+
+
+
+
+ Small:
+
+
+
+ Medium:
+
+
+
+ Large:
+
+
+
+
+ Custom size:
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/basic/countries.js b/vue-options-api-demos/dropdowns/autocomplete/basic/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/basic/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/autocomplete/basic/main.js b/vue-options-api-demos/dropdowns/autocomplete/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/basic/main.vue b/vue-options-api-demos/dropdowns/autocomplete/basic/main.vue
new file mode 100644
index 00000000..936bcc15
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/basic/main.vue
@@ -0,0 +1,23 @@
+
+
+
Type the name of a European country:
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.js b/vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.vue b/vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.vue
new file mode 100644
index 00000000..6fc62a1e
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/bindings/arrays/main.vue
@@ -0,0 +1,32 @@
+
+
+
Type the name of a European country:
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.js b/vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.vue b/vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.vue
new file mode 100644
index 00000000..a65f8265
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/bindings/datasets/main.vue
@@ -0,0 +1,38 @@
+
+
+
Type the name of a European country:
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.js b/vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.vue b/vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.vue
new file mode 100644
index 00000000..30c5d492
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/bindings/value/main.vue
@@ -0,0 +1,35 @@
+
+
+
Type the name of a European country:
+
+
+
+ Selected country: {{ value }}
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/common/countries.js b/vue-options-api-demos/dropdowns/autocomplete/common/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/common/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.js b/vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.vue b/vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.vue
new file mode 100644
index 00000000..8e7c699b
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/filtering/basic/main.vue
@@ -0,0 +1,44 @@
+
+
+
Type the name of a European country:
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.js b/vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.vue b/vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.vue
new file mode 100644
index 00000000..67ab15e3
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/filtering/loading/main.vue
@@ -0,0 +1,54 @@
+
+
+
Type the name of a European country:
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.js b/vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.vue b/vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.vue
new file mode 100644
index 00000000..5b94a303
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/filtering/minfilter/main.vue
@@ -0,0 +1,60 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.js b/vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.vue b/vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.vue
new file mode 100644
index 00000000..96407e39
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/forms/basic/main.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+ Select your flight route:
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/countries.js b/vue-options-api-demos/dropdowns/autocomplete/forms/countries.js
new file mode 100644
index 00000000..24f270bb
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/forms/countries.js
@@ -0,0 +1,52 @@
+export const countries = [
+ 'Albania',
+ 'Andorra',
+ 'Armenia',
+ 'Austria',
+ 'Azerbaijan',
+ 'Belarus',
+ 'Belgium',
+ 'Bosnia & Herzegovina',
+ 'Bulgaria',
+ 'Croatia',
+ 'Cyprus',
+ 'Czech Republic',
+ 'Denmark',
+ 'Estonia',
+ 'Finland',
+ 'France',
+ 'Georgia',
+ 'Germany',
+ 'Greece',
+ 'Hungary',
+ 'Iceland',
+ 'Ireland',
+ 'Italy',
+ 'Kosovo',
+ 'Latvia',
+ 'Liechtenstein',
+ 'Lithuania',
+ 'Luxembourg',
+ 'Macedonia',
+ 'Malta',
+ 'Moldova',
+ 'Monaco',
+ 'Montenegro',
+ 'Netherlands',
+ 'Norway',
+ 'Poland',
+ 'Portugal',
+ 'Romania',
+ 'Russia',
+ 'San Marino',
+ 'Serbia',
+ 'Slovakia',
+ 'Slovenia',
+ 'Spain',
+ 'Sweden',
+ 'Switzerland',
+ 'Turkey',
+ 'Ukraine',
+ 'United Kingdom',
+ 'Vatican City'
+];
diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/countries.js b/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.js b/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.vue b/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.vue
new file mode 100644
index 00000000..3303485c
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/forms/custom-message/main.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+ Select your flight route:
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/countries.js b/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.js b/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.vue b/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.vue
new file mode 100644
index 00000000..c7d1e7d9
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/forms/disable-styles/main.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+ Select your flight route:
+
+
+
+ Additional Comments
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/override/countries.js b/vue-options-api-demos/dropdowns/autocomplete/forms/override/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/forms/override/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/override/main.js b/vue-options-api-demos/dropdowns/autocomplete/forms/override/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/forms/override/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/forms/override/main.vue b/vue-options-api-demos/dropdowns/autocomplete/forms/override/main.vue
new file mode 100644
index 00000000..b6ce48b1
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/forms/override/main.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+ Select your flight route:
+
+
+
+ Additional Comments
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/grouping-data.js b/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/grouping-data.js
new file mode 100644
index 00000000..9a2711db
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/grouping-data.js
@@ -0,0 +1,181 @@
+export const employees = [ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date("2014-02-03T20:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date("2014-03-10T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date("2015-04-25T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+}, {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date("2015-05-19T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 5
+}, {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date("2012-10-11T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 4
+}, {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date("2011-08-21T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date("2013-07-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 6
+}, {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date("2012-10-28T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date("2010-03-02T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 5
+}, {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date("2011-09-18T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 4
+}, {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date("2014-07-31T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "QA",
+ "timeInPosition": 1
+}, {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date("2015-06-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 1
+}, {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date("2013-02-21T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date("2010-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date("2015-06-15T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Support",
+ "timeInPosition": 2
+}, {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date("2014-08-30T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+}, {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date("2011-09-08T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 3
+}, {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date("2013-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 0
+} ];
diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.js b/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.vue b/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.vue
new file mode 100644
index 00000000..cdda7121
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/basic/main.vue
@@ -0,0 +1,27 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/GroupHeaderItemRender.vue b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/GroupHeaderItemRender.vue
new file mode 100644
index 00000000..d2c8a237
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/GroupHeaderItemRender.vue
@@ -0,0 +1,21 @@
+
+
+
+ {{group}}
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/ItemRender.vue b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/ItemRender.vue
new file mode 100644
index 00000000..0967fc13
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/ItemRender.vue
@@ -0,0 +1,42 @@
+
+
+
+ {{ dataItem[textField] }} {{ index }}
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/StickyHeaderRender.vue b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/StickyHeaderRender.vue
new file mode 100644
index 00000000..60e0a1aa
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/StickyHeaderRender.vue
@@ -0,0 +1,22 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/grouping-data.js b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/grouping-data.js
new file mode 100644
index 00000000..9a2711db
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/grouping-data.js
@@ -0,0 +1,181 @@
+export const employees = [ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date("2014-02-03T20:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date("2014-03-10T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date("2015-04-25T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+}, {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date("2015-05-19T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 5
+}, {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date("2012-10-11T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 4
+}, {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date("2011-08-21T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date("2013-07-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 6
+}, {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date("2012-10-28T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date("2010-03-02T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 5
+}, {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date("2011-09-18T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 4
+}, {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date("2014-07-31T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "QA",
+ "timeInPosition": 1
+}, {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date("2015-06-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 1
+}, {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date("2013-02-21T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date("2010-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date("2015-06-15T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Support",
+ "timeInPosition": 2
+}, {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date("2014-08-30T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+}, {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date("2011-09-08T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 3
+}, {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date("2013-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 0
+} ];
diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.js b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.vue b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.vue
new file mode 100644
index 00000000..b1eb9575
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-custom/main.vue
@@ -0,0 +1,63 @@
+
+
+
+ props.onClick(ev)"
+ />
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/grouping-data.js b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/grouping-data.js
new file mode 100644
index 00000000..9a2711db
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/grouping-data.js
@@ -0,0 +1,181 @@
+export const employees = [ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date("2014-02-03T20:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date("2014-03-10T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date("2015-04-25T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+}, {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date("2015-05-19T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 5
+}, {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date("2012-10-11T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 4
+}, {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date("2011-08-21T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date("2013-07-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 6
+}, {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date("2012-10-28T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date("2010-03-02T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 5
+}, {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date("2011-09-18T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 4
+}, {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date("2014-07-31T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "QA",
+ "timeInPosition": 1
+}, {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date("2015-06-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 1
+}, {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date("2013-02-21T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date("2010-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date("2015-06-15T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Support",
+ "timeInPosition": 2
+}, {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date("2014-08-30T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+}, {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date("2011-09-08T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 3
+}, {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date("2013-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 0
+} ];
diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.js b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.vue b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.vue
new file mode 100644
index 00000000..d7a7cc09
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/grouping/grouping-filtering/main.vue
@@ -0,0 +1,45 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/header-footer/FooterRender.vue b/vue-options-api-demos/dropdowns/autocomplete/header-footer/FooterRender.vue
new file mode 100644
index 00000000..328e96da
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/header-footer/FooterRender.vue
@@ -0,0 +1,12 @@
+
+
+ footer
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/header-footer/HeaderRender.vue b/vue-options-api-demos/dropdowns/autocomplete/header-footer/HeaderRender.vue
new file mode 100644
index 00000000..dd7e5d25
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/header-footer/HeaderRender.vue
@@ -0,0 +1,12 @@
+
+
+ header
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/header-footer/countries.js b/vue-options-api-demos/dropdowns/autocomplete/header-footer/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/header-footer/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/autocomplete/header-footer/main.js b/vue-options-api-demos/dropdowns/autocomplete/header-footer/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/header-footer/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/header-footer/main.vue b/vue-options-api-demos/dropdowns/autocomplete/header-footer/main.vue
new file mode 100644
index 00000000..383f5c8e
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/header-footer/main.vue
@@ -0,0 +1,39 @@
+
+
+
Type the name of a European country:
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/item-render/ItemRender.vue b/vue-options-api-demos/dropdowns/autocomplete/item-render/ItemRender.vue
new file mode 100644
index 00000000..aea48b72
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/item-render/ItemRender.vue
@@ -0,0 +1,40 @@
+
+
+
+ {{ dataItem }} {{ index }}
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/item-render/countries.js b/vue-options-api-demos/dropdowns/autocomplete/item-render/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/item-render/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/autocomplete/item-render/main.js b/vue-options-api-demos/dropdowns/autocomplete/item-render/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/item-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/item-render/main.vue b/vue-options-api-demos/dropdowns/autocomplete/item-render/main.vue
new file mode 100644
index 00000000..f3880b12
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/item-render/main.vue
@@ -0,0 +1,38 @@
+
+
+
Type the name of a European country:
+
+
+ props.onClick(ev)"
+ />
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.js b/vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.vue b/vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.vue
new file mode 100644
index 00000000..42c05e1f
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/keyboard-navigation/main.vue
@@ -0,0 +1,32 @@
+
+
+
Type the name of a European country:
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/nodata-render/NoDataRender.vue b/vue-options-api-demos/dropdowns/autocomplete/nodata-render/NoDataRender.vue
new file mode 100644
index 00000000..9c42c161
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/nodata-render/NoDataRender.vue
@@ -0,0 +1,12 @@
+
+
+
+
+ no data here
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.js b/vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.vue b/vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.vue
new file mode 100644
index 00000000..6526c89b
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/nodata-render/main.vue
@@ -0,0 +1,30 @@
+
+
+
Type the name of a European country:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/autocomplete/suggest/countries.js b/vue-options-api-demos/dropdowns/autocomplete/suggest/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/suggest/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/autocomplete/suggest/main.js b/vue-options-api-demos/dropdowns/autocomplete/suggest/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/suggest/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/autocomplete/suggest/main.vue b/vue-options-api-demos/dropdowns/autocomplete/suggest/main.vue
new file mode 100644
index 00000000..92ea9322
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/autocomplete/suggest/main.vue
@@ -0,0 +1,46 @@
+
+
+
+
AutoComplete in Uncontrolled Mode
+
+
+
+
AutoComplete in Controlled Mode
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/grouping-data.js b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/grouping-data.js
new file mode 100644
index 00000000..9f42ec6e
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/grouping-data.js
@@ -0,0 +1,200 @@
+export const employees = [
+ {
+ id: 11,
+ name: "Hyacinth Hood",
+ reportsTo: 32,
+ phone: "(889) 345-2438",
+ extension: 8564,
+ hireDate: new Date("2014-02-03T20:00:00.000Z"),
+ fullTime: true,
+ position: "Team Lead",
+ timeInPosition: 1,
+ },
+ {
+ id: 40,
+ name: "Karleigh Garza",
+ reportsTo: 52,
+ phone: "(370) 983-8796",
+ extension: 4044,
+ hireDate: new Date("2014-03-10T00:00:00.000Z"),
+ fullTime: true,
+ position: "Team Lead",
+ timeInPosition: 1,
+ },
+ {
+ id: 46,
+ name: "Darrel Solis",
+ reportsTo: 43,
+ phone: "(327) 977-0216",
+ extension: 7779,
+ hireDate: new Date("2015-04-25T00:00:00.000Z"),
+ fullTime: true,
+ position: "Team Lead",
+ timeInPosition: 4,
+ },
+ {
+ id: 76,
+ name: "Cheyenne Olson",
+ reportsTo: 63,
+ phone: "(241) 645-0257",
+ extension: 9181,
+ hireDate: new Date("2015-05-19T00:00:00.000Z"),
+ fullTime: true,
+ position: "Developer",
+ timeInPosition: 5,
+ },
+ {
+ id: 78,
+ name: "Rinah Simon",
+ reportsTo: 11,
+ phone: "(285) 912-5271",
+ extension: 7795,
+ hireDate: new Date("2012-10-11T00:00:00.000Z"),
+ fullTime: true,
+ position: "Developer",
+ timeInPosition: 4,
+ },
+ {
+ id: 79,
+ name: "Duncan Mathews",
+ reportsTo: 64,
+ phone: "(790) 971-9709",
+ extension: 4573,
+ hireDate: new Date("2011-08-21T00:00:00.000Z"),
+ fullTime: false,
+ position: "Developer",
+ timeInPosition: 3,
+ },
+ {
+ id: 82,
+ name: "Yael Walters",
+ reportsTo: 69,
+ phone: "(311) 489-8191",
+ extension: 6520,
+ hireDate: new Date("2013-07-04T00:00:00.000Z"),
+ fullTime: true,
+ position: "Developer",
+ timeInPosition: 6,
+ },
+ {
+ id: 75,
+ name: "Eric Russell",
+ reportsTo: 63,
+ phone: "(516) 575-8505",
+ extension: 2224,
+ hireDate: new Date("2012-10-28T00:00:00.000Z"),
+ fullTime: true,
+ position: "Developer",
+ timeInPosition: 3,
+ },
+ {
+ id: 55,
+ name: "Summer Mosley",
+ reportsTo: 46,
+ phone: "(784) 962-2301",
+ extension: 5492,
+ hireDate: new Date("2010-03-02T00:00:00.000Z"),
+ fullTime: true,
+ position: "QA",
+ timeInPosition: 5,
+ },
+ {
+ id: 59,
+ name: "Keiko Espinoza",
+ reportsTo: 46,
+ phone: "(226) 600-5305",
+ extension: 9363,
+ hireDate: new Date("2011-09-18T00:00:00.000Z"),
+ fullTime: true,
+ position: "QA",
+ timeInPosition: 4,
+ },
+ {
+ id: 72,
+ name: "Stacey Lynn",
+ reportsTo: 40,
+ phone: "(140) 772-7509",
+ extension: 8396,
+ hireDate: new Date("2014-07-31T00:00:00.000Z"),
+ fullTime: false,
+ position: "QA",
+ timeInPosition: 1,
+ },
+ {
+ id: 38,
+ name: "Elton Tucker",
+ reportsTo: 69,
+ phone: "(988) 930-9331",
+ extension: 9216,
+ hireDate: new Date("2015-06-04T00:00:00.000Z"),
+ fullTime: true,
+ position: "Support",
+ timeInPosition: 1,
+ },
+ {
+ id: 71,
+ name: "Flavia Short",
+ reportsTo: 63,
+ phone: "(370) 133-9238",
+ extension: 6390,
+ hireDate: new Date("2013-02-21T00:00:00.000Z"),
+ fullTime: true,
+ position: "Support",
+ timeInPosition: 0,
+ },
+ {
+ id: 61,
+ name: "Candace Pickett",
+ reportsTo: 46,
+ phone: "(120) 117-7475",
+ extension: 5178,
+ hireDate: new Date("2010-05-06T00:00:00.000Z"),
+ fullTime: true,
+ position: "Support",
+ timeInPosition: 0,
+ },
+ {
+ id: 65,
+ name: "Thomas Terry",
+ reportsTo: 63,
+ phone: "(764) 831-4248",
+ extension: 3574,
+ hireDate: new Date("2015-06-15T00:00:00.000Z"),
+ fullTime: false,
+ position: "Support",
+ timeInPosition: 2,
+ },
+ {
+ id: 62,
+ name: "Palmer Gregory",
+ reportsTo: 64,
+ phone: "(360) 430-2505",
+ extension: 4337,
+ hireDate: new Date("2014-08-30T00:00:00.000Z"),
+ fullTime: true,
+ position: "Designer",
+ timeInPosition: 4,
+ },
+ {
+ id: 12,
+ name: "Jamalia Wallace",
+ reportsTo: 64,
+ phone: "(611) 391-8016",
+ extension: 1952,
+ hireDate: new Date("2011-09-08T00:00:00.000Z"),
+ fullTime: true,
+ position: "Designer",
+ timeInPosition: 3,
+ },
+ {
+ id: 66,
+ name: "Gloria Freeman",
+ reportsTo: 53,
+ phone: "(344) 950-9168",
+ extension: 4738,
+ hireDate: new Date("2013-05-06T00:00:00.000Z"),
+ fullTime: true,
+ position: "Designer",
+ timeInPosition: 0,
+ },
+];
diff --git a/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.js b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.vue b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.vue
new file mode 100644
index 00000000..b323d1c8
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering-grouping/main.vue
@@ -0,0 +1,28 @@
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.js b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.vue b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.vue
new file mode 100644
index 00000000..a730991d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/adaptive-rendering/main.vue
@@ -0,0 +1,56 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/configurator/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/combobox/appearance/configurator/DropDownStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/appearance/configurator/DropDownStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.js b/vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.vue b/vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.vue
new file mode 100644
index 00000000..b0e1f160
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/appearance/configurator/main.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.js b/vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.vue b/vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..2f44c427
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/appearance/fill-mode/main.vue
@@ -0,0 +1,95 @@
+
+
+
+
+ Flat:
+
+
+
+ Solid:
+
+
+
+ Outline:
+
+
+
+
+
+ Custom fill mode:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.js b/vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.vue b/vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.vue
new file mode 100644
index 00000000..692dd2ff
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/appearance/rounded/main.vue
@@ -0,0 +1,110 @@
+
+
+
+
+ Small roundness:
+
+
+
+ Medium roundness:
+
+
+
+ Large roundness:
+
+
+
+
+
+ Full roundness:
+
+
+
+ Custom roundness:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/size/main.js b/vue-options-api-demos/dropdowns/combobox/appearance/size/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/appearance/size/main.vue b/vue-options-api-demos/dropdowns/combobox/appearance/size/main.vue
new file mode 100644
index 00000000..e063b3a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/appearance/size/main.vue
@@ -0,0 +1,92 @@
+
+
+
+
+ Small:
+
+
+
+ Medium:
+
+
+
+ Large:
+
+
+
+
+ Custom size:
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/basic/main.js b/vue-options-api-demos/dropdowns/combobox/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/basic/main.vue b/vue-options-api-demos/dropdowns/combobox/basic/main.vue
new file mode 100644
index 00000000..f0756813
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/basic/main.vue
@@ -0,0 +1,32 @@
+
+
+
+
+ Allow custom values
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.js b/vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.vue b/vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.vue
new file mode 100644
index 00000000..34ca393e
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/bindings/arrays/main.vue
@@ -0,0 +1,32 @@
+
+
+
Type the name of a European country:
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.js b/vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.vue b/vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.vue
new file mode 100644
index 00000000..c0202a78
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/bindings/datasets/main.vue
@@ -0,0 +1,38 @@
+
+
+
Type the name of a European country:
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.js b/vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.vue b/vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.vue
new file mode 100644
index 00000000..2b52dc76
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/bindings/value-primitive/main.vue
@@ -0,0 +1,61 @@
+
+
+
Selected Value: {{ value }}
+
+ value and change
+
+
+
+
+
+ v-model
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/value/main.js b/vue-options-api-demos/dropdowns/combobox/bindings/value/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/bindings/value/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/bindings/value/main.vue b/vue-options-api-demos/dropdowns/combobox/bindings/value/main.vue
new file mode 100644
index 00000000..aa3beb01
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/bindings/value/main.vue
@@ -0,0 +1,35 @@
+
+
+
Type the name of a European country:
+
+
+
+ Selected country: {{ value }}
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/cascading/data.js b/vue-options-api-demos/dropdowns/combobox/cascading/data.js
new file mode 100644
index 00000000..206f3369
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/cascading/data.js
@@ -0,0 +1,31 @@
+const dataCategories = [
+ { categoryName: "Beverages", categoryId: 1 },
+ { categoryName: "Condiments", categoryId: 2 },
+ { categoryName: "Seafood", categoryId: 3 }
+];
+
+const dataProducts = [
+ { productName: "Chai", productId: 1, categoryId: 1 },
+ { productName: "Chang", productId: 2, categoryId: 1 },
+ { productName: "Aniseed Syrup", productId: 3, categoryId: 2 },
+ { productName: "Genen Shouyu", productId: 4, categoryId: 2 },
+ { productName: "Ikura", productId: 5, categoryId: 3 },
+ { productName: "Konbu", productId: 6, categoryId: 3 }
+];
+
+const dataOrders = [
+ { orderName: "Cunewalde", orderId: 1, productId: 1 },
+ { orderName: "Albuquerque", orderId: 2, productId: 1 },
+ { orderName: "Geneva", orderId: 3, productId: 2 },
+ { orderName: "Graz", orderId: 4, productId: 2 },
+ { orderName: "London", orderId: 5, productId: 3 },
+ { orderName: "I. de Margarita", orderId: 6, productId: 3 },
+ { orderName: "Barquisimeto", orderId: 7, productId: 4 },
+ { orderName: "Brandenburg", orderId: 8, productId: 4 },
+ { orderName: "Cunewalde", orderId: 9, productId: 5 },
+ { orderName: "Mexico D.F.", orderId: 10, productId: 5 },
+ { orderName: "Mexico D.F.", orderId: 11, productId: 6 },
+ { orderName: "Rio de Janeiro", orderId: 12, productId: 6 }
+];
+
+export { dataCategories, dataProducts, dataOrders };
diff --git a/vue-options-api-demos/dropdowns/combobox/cascading/main.js b/vue-options-api-demos/dropdowns/combobox/cascading/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/cascading/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/cascading/main.vue b/vue-options-api-demos/dropdowns/combobox/cascading/main.vue
new file mode 100644
index 00000000..416ba20a
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/cascading/main.vue
@@ -0,0 +1,85 @@
+
+
+
+ Categories
+
+
+
+
+ Products
+
+
+
+
+ Orders
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/common/countries.js b/vue-options-api-demos/dropdowns/combobox/common/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/common/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/combobox/custom-values/object/main.js b/vue-options-api-demos/dropdowns/combobox/custom-values/object/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/custom-values/object/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/custom-values/object/main.vue b/vue-options-api-demos/dropdowns/combobox/custom-values/object/main.vue
new file mode 100644
index 00000000..a1ef0284
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/custom-values/object/main.vue
@@ -0,0 +1,51 @@
+
+
+
Custom values are enabled . Type a custom value.
+
ComboBox value: {{JSON.stringify(value)}}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.js b/vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.vue b/vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.vue
new file mode 100644
index 00000000..4ef45765
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/custom-values/primitive/main.vue
@@ -0,0 +1,30 @@
+
+
+
Custom values are enabled . Type a custom value.
+
primitive data
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/basic/main.js b/vue-options-api-demos/dropdowns/combobox/filtering/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/filtering/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/basic/main.vue b/vue-options-api-demos/dropdowns/combobox/filtering/basic/main.vue
new file mode 100644
index 00000000..7d2dd40d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/filtering/basic/main.vue
@@ -0,0 +1,40 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/loading/main.js b/vue-options-api-demos/dropdowns/combobox/filtering/loading/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/filtering/loading/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/loading/main.vue b/vue-options-api-demos/dropdowns/combobox/filtering/loading/main.vue
new file mode 100644
index 00000000..36fd1488
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/filtering/loading/main.vue
@@ -0,0 +1,49 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.js b/vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.vue b/vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.vue
new file mode 100644
index 00000000..2573d7b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/filtering/minfilter/main.vue
@@ -0,0 +1,42 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/remote/main.js b/vue-options-api-demos/dropdowns/combobox/filtering/remote/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/filtering/remote/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/filtering/remote/main.vue b/vue-options-api-demos/dropdowns/combobox/filtering/remote/main.vue
new file mode 100644
index 00000000..e697dcb5
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/filtering/remote/main.vue
@@ -0,0 +1,151 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/forms/basic/main.js b/vue-options-api-demos/dropdowns/combobox/forms/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/forms/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/forms/basic/main.vue b/vue-options-api-demos/dropdowns/combobox/forms/basic/main.vue
new file mode 100644
index 00000000..c5b8e99c
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/forms/basic/main.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+ Select your flight route:
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/forms/countries.js b/vue-options-api-demos/dropdowns/combobox/forms/countries.js
new file mode 100644
index 00000000..24f270bb
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/forms/countries.js
@@ -0,0 +1,52 @@
+export const countries = [
+ 'Albania',
+ 'Andorra',
+ 'Armenia',
+ 'Austria',
+ 'Azerbaijan',
+ 'Belarus',
+ 'Belgium',
+ 'Bosnia & Herzegovina',
+ 'Bulgaria',
+ 'Croatia',
+ 'Cyprus',
+ 'Czech Republic',
+ 'Denmark',
+ 'Estonia',
+ 'Finland',
+ 'France',
+ 'Georgia',
+ 'Germany',
+ 'Greece',
+ 'Hungary',
+ 'Iceland',
+ 'Ireland',
+ 'Italy',
+ 'Kosovo',
+ 'Latvia',
+ 'Liechtenstein',
+ 'Lithuania',
+ 'Luxembourg',
+ 'Macedonia',
+ 'Malta',
+ 'Moldova',
+ 'Monaco',
+ 'Montenegro',
+ 'Netherlands',
+ 'Norway',
+ 'Poland',
+ 'Portugal',
+ 'Romania',
+ 'Russia',
+ 'San Marino',
+ 'Serbia',
+ 'Slovakia',
+ 'Slovenia',
+ 'Spain',
+ 'Sweden',
+ 'Switzerland',
+ 'Turkey',
+ 'Ukraine',
+ 'United Kingdom',
+ 'Vatican City'
+];
diff --git a/vue-options-api-demos/dropdowns/combobox/forms/custom-message/countries.js b/vue-options-api-demos/dropdowns/combobox/forms/custom-message/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/forms/custom-message/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.js b/vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.vue b/vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.vue
new file mode 100644
index 00000000..67b1f565
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/forms/custom-message/main.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+ Select your flight route:
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/countries.js b/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.js b/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.vue b/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.vue
new file mode 100644
index 00000000..6d4ac07f
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/forms/disable-styles/main.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+ Select your flight route:
+
+
+
+
+
+
+
+
+
+ Additional Comments
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/forms/override/countries.js b/vue-options-api-demos/dropdowns/combobox/forms/override/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/forms/override/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/combobox/forms/override/main.js b/vue-options-api-demos/dropdowns/combobox/forms/override/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/forms/override/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/forms/override/main.vue b/vue-options-api-demos/dropdowns/combobox/forms/override/main.vue
new file mode 100644
index 00000000..ccb6bbec
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/forms/override/main.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+ Select your flight route:
+
+
+
+
+
+
+
+
+
+ Additional Comments
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/basic/grouping-data.js b/vue-options-api-demos/dropdowns/combobox/grouping/basic/grouping-data.js
new file mode 100644
index 00000000..9a2711db
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/basic/grouping-data.js
@@ -0,0 +1,181 @@
+export const employees = [ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date("2014-02-03T20:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date("2014-03-10T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date("2015-04-25T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+}, {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date("2015-05-19T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 5
+}, {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date("2012-10-11T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 4
+}, {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date("2011-08-21T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date("2013-07-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 6
+}, {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date("2012-10-28T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date("2010-03-02T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 5
+}, {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date("2011-09-18T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 4
+}, {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date("2014-07-31T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "QA",
+ "timeInPosition": 1
+}, {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date("2015-06-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 1
+}, {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date("2013-02-21T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date("2010-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date("2015-06-15T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Support",
+ "timeInPosition": 2
+}, {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date("2014-08-30T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+}, {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date("2011-09-08T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 3
+}, {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date("2013-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 0
+} ];
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/basic/main.js b/vue-options-api-demos/dropdowns/combobox/grouping/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/basic/main.vue b/vue-options-api-demos/dropdowns/combobox/grouping/basic/main.vue
new file mode 100644
index 00000000..d8d86c56
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/basic/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/custom/GroupHeaderItemRender.vue b/vue-options-api-demos/dropdowns/combobox/grouping/custom/GroupHeaderItemRender.vue
new file mode 100644
index 00000000..d2c8a237
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/custom/GroupHeaderItemRender.vue
@@ -0,0 +1,21 @@
+
+
+
+ {{group}}
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/custom/ItemRender.vue b/vue-options-api-demos/dropdowns/combobox/grouping/custom/ItemRender.vue
new file mode 100644
index 00000000..0967fc13
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/custom/ItemRender.vue
@@ -0,0 +1,42 @@
+
+
+
+ {{ dataItem[textField] }} {{ index }}
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/custom/StickyHeaderRender.vue b/vue-options-api-demos/dropdowns/combobox/grouping/custom/StickyHeaderRender.vue
new file mode 100644
index 00000000..60e0a1aa
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/custom/StickyHeaderRender.vue
@@ -0,0 +1,22 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/custom/grouping-data.js b/vue-options-api-demos/dropdowns/combobox/grouping/custom/grouping-data.js
new file mode 100644
index 00000000..9a2711db
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/custom/grouping-data.js
@@ -0,0 +1,181 @@
+export const employees = [ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date("2014-02-03T20:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date("2014-03-10T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date("2015-04-25T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+}, {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date("2015-05-19T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 5
+}, {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date("2012-10-11T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 4
+}, {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date("2011-08-21T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date("2013-07-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 6
+}, {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date("2012-10-28T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date("2010-03-02T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 5
+}, {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date("2011-09-18T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 4
+}, {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date("2014-07-31T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "QA",
+ "timeInPosition": 1
+}, {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date("2015-06-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 1
+}, {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date("2013-02-21T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date("2010-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date("2015-06-15T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Support",
+ "timeInPosition": 2
+}, {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date("2014-08-30T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+}, {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date("2011-09-08T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 3
+}, {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date("2013-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 0
+} ];
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/custom/main.js b/vue-options-api-demos/dropdowns/combobox/grouping/custom/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/custom/main.vue b/vue-options-api-demos/dropdowns/combobox/grouping/custom/main.vue
new file mode 100644
index 00000000..729ab719
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/custom/main.vue
@@ -0,0 +1,63 @@
+
+
+
+ props.onClick(ev)"
+ />
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/filtering/grouping-data.js b/vue-options-api-demos/dropdowns/combobox/grouping/filtering/grouping-data.js
new file mode 100644
index 00000000..9a2711db
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/filtering/grouping-data.js
@@ -0,0 +1,181 @@
+export const employees = [ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date("2014-02-03T20:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date("2014-03-10T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date("2015-04-25T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+}, {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date("2015-05-19T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 5
+}, {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date("2012-10-11T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 4
+}, {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date("2011-08-21T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date("2013-07-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 6
+}, {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date("2012-10-28T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date("2010-03-02T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 5
+}, {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date("2011-09-18T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 4
+}, {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date("2014-07-31T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "QA",
+ "timeInPosition": 1
+}, {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date("2015-06-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 1
+}, {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date("2013-02-21T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date("2010-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date("2015-06-15T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Support",
+ "timeInPosition": 2
+}, {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date("2014-08-30T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+}, {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date("2011-09-08T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 3
+}, {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date("2013-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 0
+} ];
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.js b/vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.vue b/vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.vue
new file mode 100644
index 00000000..9eee11e8
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/filtering/main.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.js b/vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.js
new file mode 100644
index 00000000..3a6df88d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+
+createApp(App).mount("#app");
diff --git a/vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.vue b/vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.vue
new file mode 100644
index 00000000..4f4ee38d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/grouping/virtualization/main.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/header-footer/FooterRender.vue b/vue-options-api-demos/dropdowns/combobox/header-footer/FooterRender.vue
new file mode 100644
index 00000000..328e96da
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/header-footer/FooterRender.vue
@@ -0,0 +1,12 @@
+
+
+ footer
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/header-footer/HeaderRender.vue b/vue-options-api-demos/dropdowns/combobox/header-footer/HeaderRender.vue
new file mode 100644
index 00000000..dd7e5d25
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/header-footer/HeaderRender.vue
@@ -0,0 +1,12 @@
+
+
+ header
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/header-footer/countries.js b/vue-options-api-demos/dropdowns/combobox/header-footer/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/header-footer/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/combobox/header-footer/main.js b/vue-options-api-demos/dropdowns/combobox/header-footer/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/header-footer/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/header-footer/main.vue b/vue-options-api-demos/dropdowns/combobox/header-footer/main.vue
new file mode 100644
index 00000000..c3297f27
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/header-footer/main.vue
@@ -0,0 +1,40 @@
+
+
+
Type the name of a European country:
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/item-render/ItemRender.vue b/vue-options-api-demos/dropdowns/combobox/item-render/ItemRender.vue
new file mode 100644
index 00000000..50ceb09f
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/item-render/ItemRender.vue
@@ -0,0 +1,27 @@
+
+
+
+ {{dataItem}} {{index}}
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/item-render/countries.js b/vue-options-api-demos/dropdowns/combobox/item-render/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/item-render/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/combobox/item-render/main.js b/vue-options-api-demos/dropdowns/combobox/item-render/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/item-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/item-render/main.vue b/vue-options-api-demos/dropdowns/combobox/item-render/main.vue
new file mode 100644
index 00000000..843457d5
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/item-render/main.vue
@@ -0,0 +1,37 @@
+
+
+
Type the name of a European country:
+
+
+ props.onClick(ev)" />
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.js b/vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.vue b/vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.vue
new file mode 100644
index 00000000..31bcf195
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/keyboard-navigation/main.vue
@@ -0,0 +1,27 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/nodata-render/NoDataRender.vue b/vue-options-api-demos/dropdowns/combobox/nodata-render/NoDataRender.vue
new file mode 100644
index 00000000..8beb5641
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/nodata-render/NoDataRender.vue
@@ -0,0 +1,12 @@
+
+
+
+
+ no data here
+ `
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/nodata-render/main.js b/vue-options-api-demos/dropdowns/combobox/nodata-render/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/nodata-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/nodata-render/main.vue b/vue-options-api-demos/dropdowns/combobox/nodata-render/main.vue
new file mode 100644
index 00000000..4707920e
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/nodata-render/main.vue
@@ -0,0 +1,31 @@
+
+
+
Type the name of a European country:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/suggest/countries.js b/vue-options-api-demos/dropdowns/combobox/suggest/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/suggest/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/combobox/suggest/main.js b/vue-options-api-demos/dropdowns/combobox/suggest/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/suggest/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/suggest/main.vue b/vue-options-api-demos/dropdowns/combobox/suggest/main.vue
new file mode 100644
index 00000000..ba69f316
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/suggest/main.vue
@@ -0,0 +1,48 @@
+
+
+
+
ComboBox in Uncontrolled Mode
+
+
+
+
ComboBox in Controlled Mode
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.js b/vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.vue b/vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.vue
new file mode 100644
index 00000000..385a1f25
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/virtualization/basic/main.vue
@@ -0,0 +1,57 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.js b/vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.vue b/vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.vue
new file mode 100644
index 00000000..62e2c112
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/combobox/virtualization/filtering/main.vue
@@ -0,0 +1,71 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/common/es.json b/vue-options-api-demos/dropdowns/common/es.json
new file mode 100644
index 00000000..dc3df71d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/common/es.json
@@ -0,0 +1,6 @@
+{
+ "dropdowns": {
+ "nodata": "DATOS NO ENCONTRADOS.",
+ "clear": "claro"
+ }
+}
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/grouping-data.js b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/grouping-data.js
new file mode 100644
index 00000000..9f42ec6e
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/grouping-data.js
@@ -0,0 +1,200 @@
+export const employees = [
+ {
+ id: 11,
+ name: "Hyacinth Hood",
+ reportsTo: 32,
+ phone: "(889) 345-2438",
+ extension: 8564,
+ hireDate: new Date("2014-02-03T20:00:00.000Z"),
+ fullTime: true,
+ position: "Team Lead",
+ timeInPosition: 1,
+ },
+ {
+ id: 40,
+ name: "Karleigh Garza",
+ reportsTo: 52,
+ phone: "(370) 983-8796",
+ extension: 4044,
+ hireDate: new Date("2014-03-10T00:00:00.000Z"),
+ fullTime: true,
+ position: "Team Lead",
+ timeInPosition: 1,
+ },
+ {
+ id: 46,
+ name: "Darrel Solis",
+ reportsTo: 43,
+ phone: "(327) 977-0216",
+ extension: 7779,
+ hireDate: new Date("2015-04-25T00:00:00.000Z"),
+ fullTime: true,
+ position: "Team Lead",
+ timeInPosition: 4,
+ },
+ {
+ id: 76,
+ name: "Cheyenne Olson",
+ reportsTo: 63,
+ phone: "(241) 645-0257",
+ extension: 9181,
+ hireDate: new Date("2015-05-19T00:00:00.000Z"),
+ fullTime: true,
+ position: "Developer",
+ timeInPosition: 5,
+ },
+ {
+ id: 78,
+ name: "Rinah Simon",
+ reportsTo: 11,
+ phone: "(285) 912-5271",
+ extension: 7795,
+ hireDate: new Date("2012-10-11T00:00:00.000Z"),
+ fullTime: true,
+ position: "Developer",
+ timeInPosition: 4,
+ },
+ {
+ id: 79,
+ name: "Duncan Mathews",
+ reportsTo: 64,
+ phone: "(790) 971-9709",
+ extension: 4573,
+ hireDate: new Date("2011-08-21T00:00:00.000Z"),
+ fullTime: false,
+ position: "Developer",
+ timeInPosition: 3,
+ },
+ {
+ id: 82,
+ name: "Yael Walters",
+ reportsTo: 69,
+ phone: "(311) 489-8191",
+ extension: 6520,
+ hireDate: new Date("2013-07-04T00:00:00.000Z"),
+ fullTime: true,
+ position: "Developer",
+ timeInPosition: 6,
+ },
+ {
+ id: 75,
+ name: "Eric Russell",
+ reportsTo: 63,
+ phone: "(516) 575-8505",
+ extension: 2224,
+ hireDate: new Date("2012-10-28T00:00:00.000Z"),
+ fullTime: true,
+ position: "Developer",
+ timeInPosition: 3,
+ },
+ {
+ id: 55,
+ name: "Summer Mosley",
+ reportsTo: 46,
+ phone: "(784) 962-2301",
+ extension: 5492,
+ hireDate: new Date("2010-03-02T00:00:00.000Z"),
+ fullTime: true,
+ position: "QA",
+ timeInPosition: 5,
+ },
+ {
+ id: 59,
+ name: "Keiko Espinoza",
+ reportsTo: 46,
+ phone: "(226) 600-5305",
+ extension: 9363,
+ hireDate: new Date("2011-09-18T00:00:00.000Z"),
+ fullTime: true,
+ position: "QA",
+ timeInPosition: 4,
+ },
+ {
+ id: 72,
+ name: "Stacey Lynn",
+ reportsTo: 40,
+ phone: "(140) 772-7509",
+ extension: 8396,
+ hireDate: new Date("2014-07-31T00:00:00.000Z"),
+ fullTime: false,
+ position: "QA",
+ timeInPosition: 1,
+ },
+ {
+ id: 38,
+ name: "Elton Tucker",
+ reportsTo: 69,
+ phone: "(988) 930-9331",
+ extension: 9216,
+ hireDate: new Date("2015-06-04T00:00:00.000Z"),
+ fullTime: true,
+ position: "Support",
+ timeInPosition: 1,
+ },
+ {
+ id: 71,
+ name: "Flavia Short",
+ reportsTo: 63,
+ phone: "(370) 133-9238",
+ extension: 6390,
+ hireDate: new Date("2013-02-21T00:00:00.000Z"),
+ fullTime: true,
+ position: "Support",
+ timeInPosition: 0,
+ },
+ {
+ id: 61,
+ name: "Candace Pickett",
+ reportsTo: 46,
+ phone: "(120) 117-7475",
+ extension: 5178,
+ hireDate: new Date("2010-05-06T00:00:00.000Z"),
+ fullTime: true,
+ position: "Support",
+ timeInPosition: 0,
+ },
+ {
+ id: 65,
+ name: "Thomas Terry",
+ reportsTo: 63,
+ phone: "(764) 831-4248",
+ extension: 3574,
+ hireDate: new Date("2015-06-15T00:00:00.000Z"),
+ fullTime: false,
+ position: "Support",
+ timeInPosition: 2,
+ },
+ {
+ id: 62,
+ name: "Palmer Gregory",
+ reportsTo: 64,
+ phone: "(360) 430-2505",
+ extension: 4337,
+ hireDate: new Date("2014-08-30T00:00:00.000Z"),
+ fullTime: true,
+ position: "Designer",
+ timeInPosition: 4,
+ },
+ {
+ id: 12,
+ name: "Jamalia Wallace",
+ reportsTo: 64,
+ phone: "(611) 391-8016",
+ extension: 1952,
+ hireDate: new Date("2011-09-08T00:00:00.000Z"),
+ fullTime: true,
+ position: "Designer",
+ timeInPosition: 3,
+ },
+ {
+ id: 66,
+ name: "Gloria Freeman",
+ reportsTo: 53,
+ phone: "(344) 950-9168",
+ extension: 4738,
+ hireDate: new Date("2013-05-06T00:00:00.000Z"),
+ fullTime: true,
+ position: "Designer",
+ timeInPosition: 0,
+ },
+];
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.js b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.js
new file mode 100644
index 00000000..3a6df88d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.js
@@ -0,0 +1,4 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+
+createApp(App).mount("#app");
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.vue
new file mode 100644
index 00000000..b5698054
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering-grouping/main.vue
@@ -0,0 +1,28 @@
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.js b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.vue
new file mode 100644
index 00000000..7762a4a5
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/adaptive-rendering/main.vue
@@ -0,0 +1,56 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/DropDownStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/DropDownStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.js b/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.vue
new file mode 100644
index 00000000..ac002565
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/configurator/main.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.js b/vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..7e383a27
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/fill-mode/main.vue
@@ -0,0 +1,95 @@
+
+
+
+
+ Flat:
+
+
+
+ Solid:
+
+
+
+ Outline:
+
+
+
+
+
+ Custom fill mode:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.js b/vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.vue
new file mode 100644
index 00000000..ee431e02
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/rounded/main.vue
@@ -0,0 +1,110 @@
+
+
+
+
+ Small roundness:
+
+
+
+ Medium roundness:
+
+
+
+ Large roundness:
+
+
+
+
+
+ Full roundness:
+
+
+
+ Custom roundness:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.js b/vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.vue
new file mode 100644
index 00000000..98901cb6
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/appearance/size/main.vue
@@ -0,0 +1,92 @@
+
+
+
+
+ Small:
+
+
+
+ Medium:
+
+
+
+ Large:
+
+
+
+
+ Custom size:
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/basic/main.js b/vue-options-api-demos/dropdowns/dropdownlist/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/basic/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/basic/main.vue
new file mode 100644
index 00000000..0b663932
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/basic/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/binding/main.js b/vue-options-api-demos/dropdowns/dropdownlist/binding/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/binding/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/binding/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/binding/main.vue
new file mode 100644
index 00000000..6a4cf8c0
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/binding/main.vue
@@ -0,0 +1,57 @@
+
+
+
Selected Value: {{ value }}
+
+ value and change
+
+
+
+
+
+ v-model
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/cascading/data.js b/vue-options-api-demos/dropdowns/dropdownlist/cascading/data.js
new file mode 100644
index 00000000..206f3369
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/cascading/data.js
@@ -0,0 +1,31 @@
+const dataCategories = [
+ { categoryName: "Beverages", categoryId: 1 },
+ { categoryName: "Condiments", categoryId: 2 },
+ { categoryName: "Seafood", categoryId: 3 }
+];
+
+const dataProducts = [
+ { productName: "Chai", productId: 1, categoryId: 1 },
+ { productName: "Chang", productId: 2, categoryId: 1 },
+ { productName: "Aniseed Syrup", productId: 3, categoryId: 2 },
+ { productName: "Genen Shouyu", productId: 4, categoryId: 2 },
+ { productName: "Ikura", productId: 5, categoryId: 3 },
+ { productName: "Konbu", productId: 6, categoryId: 3 }
+];
+
+const dataOrders = [
+ { orderName: "Cunewalde", orderId: 1, productId: 1 },
+ { orderName: "Albuquerque", orderId: 2, productId: 1 },
+ { orderName: "Geneva", orderId: 3, productId: 2 },
+ { orderName: "Graz", orderId: 4, productId: 2 },
+ { orderName: "London", orderId: 5, productId: 3 },
+ { orderName: "I. de Margarita", orderId: 6, productId: 3 },
+ { orderName: "Barquisimeto", orderId: 7, productId: 4 },
+ { orderName: "Brandenburg", orderId: 8, productId: 4 },
+ { orderName: "Cunewalde", orderId: 9, productId: 5 },
+ { orderName: "Mexico D.F.", orderId: 10, productId: 5 },
+ { orderName: "Mexico D.F.", orderId: 11, productId: 6 },
+ { orderName: "Rio de Janeiro", orderId: 12, productId: 6 }
+];
+
+export { dataCategories, dataProducts, dataOrders };
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/cascading/main.js b/vue-options-api-demos/dropdowns/dropdownlist/cascading/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/cascading/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/cascading/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/cascading/main.vue
new file mode 100644
index 00000000..c85a8ae4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/cascading/main.vue
@@ -0,0 +1,96 @@
+
+
+
+ Categories
+
+
+
+
+ Products
+
+
+
+
+ Orders
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/common/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/common/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/common/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.js b/vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.vue
new file mode 100644
index 00000000..0b663932
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/default-item/basic/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.js b/vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.vue
new file mode 100644
index 00000000..e2b201e5
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/default-item/object-values/main.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/events/main.js b/vue-options-api-demos/dropdowns/dropdownlist/events/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/events/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/events/main.vue
new file mode 100644
index 00000000..fa8464ef
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/events/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.js b/vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.vue
new file mode 100644
index 00000000..97b3e277
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/basic/main.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.js b/vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.vue
new file mode 100644
index 00000000..bf8c960a
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/delay/main.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.js b/vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.vue
new file mode 100644
index 00000000..63735684
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/minfilter/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.js b/vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.vue
new file mode 100644
index 00000000..e0ff1adc
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/filtering/remote-data/main.vue
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.vue
new file mode 100644
index 00000000..adf013f8
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/basic/main.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+ Select your flight route:
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/countries.js
new file mode 100644
index 00000000..24f270bb
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/countries.js
@@ -0,0 +1,52 @@
+export const countries = [
+ 'Albania',
+ 'Andorra',
+ 'Armenia',
+ 'Austria',
+ 'Azerbaijan',
+ 'Belarus',
+ 'Belgium',
+ 'Bosnia & Herzegovina',
+ 'Bulgaria',
+ 'Croatia',
+ 'Cyprus',
+ 'Czech Republic',
+ 'Denmark',
+ 'Estonia',
+ 'Finland',
+ 'France',
+ 'Georgia',
+ 'Germany',
+ 'Greece',
+ 'Hungary',
+ 'Iceland',
+ 'Ireland',
+ 'Italy',
+ 'Kosovo',
+ 'Latvia',
+ 'Liechtenstein',
+ 'Lithuania',
+ 'Luxembourg',
+ 'Macedonia',
+ 'Malta',
+ 'Moldova',
+ 'Monaco',
+ 'Montenegro',
+ 'Netherlands',
+ 'Norway',
+ 'Poland',
+ 'Portugal',
+ 'Romania',
+ 'Russia',
+ 'San Marino',
+ 'Serbia',
+ 'Slovakia',
+ 'Slovenia',
+ 'Spain',
+ 'Sweden',
+ 'Switzerland',
+ 'Turkey',
+ 'Ukraine',
+ 'United Kingdom',
+ 'Vatican City'
+];
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.vue
new file mode 100644
index 00000000..f46f7e07
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/custom-message/main.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+ Select your flight route:
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.vue
new file mode 100644
index 00000000..0054a565
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/disable-styles/main.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+ Select your flight route:
+
+
+
+
+
+
+
+
+
+ Additional Comments
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/override/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/override/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/override/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.js b/vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.vue
new file mode 100644
index 00000000..bc3b4974
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/forms/override/main.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+ Select your flight route:
+
+
+
+
+
+
+
+
+
+ Additional Comments
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/grouping-data.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/grouping-data.js
new file mode 100644
index 00000000..9a2711db
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/grouping-data.js
@@ -0,0 +1,181 @@
+export const employees = [ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date("2014-02-03T20:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date("2014-03-10T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date("2015-04-25T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+}, {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date("2015-05-19T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 5
+}, {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date("2012-10-11T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 4
+}, {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date("2011-08-21T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date("2013-07-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 6
+}, {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date("2012-10-28T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date("2010-03-02T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 5
+}, {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date("2011-09-18T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 4
+}, {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date("2014-07-31T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "QA",
+ "timeInPosition": 1
+}, {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date("2015-06-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 1
+}, {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date("2013-02-21T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date("2010-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date("2015-06-15T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Support",
+ "timeInPosition": 2
+}, {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date("2014-08-30T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+}, {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date("2011-09-08T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 3
+}, {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date("2013-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 0
+} ];
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.js
new file mode 100644
index 00000000..3a6df88d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+
+createApp(App).mount("#app");
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.vue
new file mode 100644
index 00000000..01ec2cfd
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/basic/main.vue
@@ -0,0 +1,26 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/GroupHeaderItemRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/GroupHeaderItemRender.vue
new file mode 100644
index 00000000..d2c8a237
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/GroupHeaderItemRender.vue
@@ -0,0 +1,21 @@
+
+
+
+ {{group}}
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/ItemRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/ItemRender.vue
new file mode 100644
index 00000000..0967fc13
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/ItemRender.vue
@@ -0,0 +1,42 @@
+
+
+
+ {{ dataItem[textField] }} {{ index }}
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/StickyHeaderRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/StickyHeaderRender.vue
new file mode 100644
index 00000000..60e0a1aa
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/StickyHeaderRender.vue
@@ -0,0 +1,22 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/grouping-data.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/grouping-data.js
new file mode 100644
index 00000000..9a2711db
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/grouping-data.js
@@ -0,0 +1,181 @@
+export const employees = [ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date("2014-02-03T20:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date("2014-03-10T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date("2015-04-25T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+}, {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date("2015-05-19T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 5
+}, {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date("2012-10-11T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 4
+}, {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date("2011-08-21T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date("2013-07-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 6
+}, {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date("2012-10-28T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date("2010-03-02T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 5
+}, {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date("2011-09-18T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 4
+}, {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date("2014-07-31T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "QA",
+ "timeInPosition": 1
+}, {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date("2015-06-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 1
+}, {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date("2013-02-21T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date("2010-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date("2015-06-15T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Support",
+ "timeInPosition": 2
+}, {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date("2014-08-30T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+}, {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date("2011-09-08T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 3
+}, {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date("2013-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 0
+} ];
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.js
new file mode 100644
index 00000000..3a6df88d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+
+createApp(App).mount("#app");
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.vue
new file mode 100644
index 00000000..fab8a512
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/custom/main.vue
@@ -0,0 +1,62 @@
+
+
+
+ props.onClick(ev)"
+ />
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/grouping-data.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/grouping-data.js
new file mode 100644
index 00000000..9a2711db
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/grouping-data.js
@@ -0,0 +1,181 @@
+export const employees = [ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date("2014-02-03T20:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date("2014-03-10T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date("2015-04-25T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+}, {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date("2015-05-19T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 5
+}, {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date("2012-10-11T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 4
+}, {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date("2011-08-21T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date("2013-07-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 6
+}, {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date("2012-10-28T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date("2010-03-02T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 5
+}, {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date("2011-09-18T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 4
+}, {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date("2014-07-31T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "QA",
+ "timeInPosition": 1
+}, {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date("2015-06-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 1
+}, {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date("2013-02-21T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date("2010-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date("2015-06-15T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Support",
+ "timeInPosition": 2
+}, {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date("2014-08-30T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+}, {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date("2011-09-08T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 3
+}, {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date("2013-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 0
+} ];
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.js
new file mode 100644
index 00000000..3a6df88d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+
+createApp(App).mount("#app");
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.vue
new file mode 100644
index 00000000..d022fab6
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/filtering/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.js b/vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.js
new file mode 100644
index 00000000..3a6df88d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+
+createApp(App).mount("#app");
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.vue
new file mode 100644
index 00000000..6f0d75d3
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/grouping/virtualization/main.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/header-footer/FooterRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/FooterRender.vue
new file mode 100644
index 00000000..328e96da
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/FooterRender.vue
@@ -0,0 +1,12 @@
+
+
+ footer
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/header-footer/HeaderRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/HeaderRender.vue
new file mode 100644
index 00000000..dd7e5d25
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/HeaderRender.vue
@@ -0,0 +1,12 @@
+
+
+ header
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/header-footer/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.js b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.vue
new file mode 100644
index 00000000..696fbd24
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/header-footer/main.vue
@@ -0,0 +1,40 @@
+
+
+
Type the name of a European country:
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/item-render/ItemRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/item-render/ItemRender.vue
new file mode 100644
index 00000000..f22df9e7
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/item-render/ItemRender.vue
@@ -0,0 +1,27 @@
+
+
+
+ {{dataItem}} {{index}}
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/item-render/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/item-render/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/item-render/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/item-render/main.js b/vue-options-api-demos/dropdowns/dropdownlist/item-render/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/item-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/item-render/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/item-render/main.vue
new file mode 100644
index 00000000..55608b36
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/item-render/main.vue
@@ -0,0 +1,37 @@
+
+
+
Type the name of a European country:
+
+
+ props.onClick(ev)" />
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.js b/vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.vue
new file mode 100644
index 00000000..27120802
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/keyboard/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/NoDataRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/NoDataRender.vue
new file mode 100644
index 00000000..9c42c161
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/NoDataRender.vue
@@ -0,0 +1,12 @@
+
+
+
+
+ no data here
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.js b/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.vue
new file mode 100644
index 00000000..f50e56e4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/nodata-render/main.vue
@@ -0,0 +1,31 @@
+
+
+
Type the name of a European country:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.js b/vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.vue
new file mode 100644
index 00000000..23e75cc6
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/primitive-value/main.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.js b/vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.vue
new file mode 100644
index 00000000..780066bd
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/value-binding/main.vue
@@ -0,0 +1,33 @@
+
+
+
+
T-shirt size: {{ value }}
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-field/main.jsx b/vue-options-api-demos/dropdowns/dropdownlist/value-field/main.jsx
new file mode 100644
index 00000000..5b0ab42f
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/value-field/main.jsx
@@ -0,0 +1,47 @@
+import Vue from 'vue';
+import VueDOM from 'vue-dom';
+import { DropDownList } from '@progress/kendo-vue-dropdowns';
+import withValueField from './withValueField.jsx';
+
+const DropDownListWithValueField = withValueField(DropDownList);
+
+class AppComponent extends Vue.Component {
+ sports = [
+ { text: 'Basketball', id: 1 },
+ { text: 'Football', id: 2 },
+ { text: 'Tennis', id: 3 },
+ { text: 'Volleyball', id: 4 }
+ ];
+ state = {
+ value: null
+ };
+
+ handleChange = (event) => {
+ this.setState({
+ value: event.target.value
+ });
+ }
+
+ render() {
+ return (
+
+
+ Selected Value: {this.state.value}
+
+
+
+ );
+ }
+}
+
+VueDOM.render(
+ ,
+ document.querySelector('my-app')
+);
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.js b/vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.vue
new file mode 100644
index 00000000..e3fb21cb
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/value-primitive/main.vue
@@ -0,0 +1,61 @@
+
+
+
Selected Value: {{ value }}
+
+ value and change
+
+
+
+
+
+ v-model
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-render/ValueRender.vue b/vue-options-api-demos/dropdowns/dropdownlist/value-render/ValueRender.vue
new file mode 100644
index 00000000..498b988c
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/value-render/ValueRender.vue
@@ -0,0 +1,24 @@
+
+
+
+ {{value}}
+
+ {{value}}
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-render/countries.js b/vue-options-api-demos/dropdowns/dropdownlist/value-render/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/value-render/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-render/main.js b/vue-options-api-demos/dropdowns/dropdownlist/value-render/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/value-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/value-render/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/value-render/main.vue
new file mode 100644
index 00000000..4d4aa3a8
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/value-render/main.vue
@@ -0,0 +1,33 @@
+
+
+
Type the name of a European country:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.js b/vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.vue
new file mode 100644
index 00000000..48a1ecbe
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/virtualization-filtering/main.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.js b/vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.vue b/vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.vue
new file mode 100644
index 00000000..3e42ce16
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdownlist/virtualization/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.js b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.vue
new file mode 100644
index 00000000..fba25f39
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/main.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/adaptive-rendering/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/DropDownStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/DropDownStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.vue
new file mode 100644
index 00000000..118af0da
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/main.vue
@@ -0,0 +1,95 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/configurator/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..947f26fd
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/main.vue
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/fill-mode/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.vue
new file mode 100644
index 00000000..51b51036
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/main.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/rounded/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.vue
new file mode 100644
index 00000000..b4d8cf32
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/main.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/appearance/size/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/basic/main.js b/vue-options-api-demos/dropdowns/dropdowntree/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/basic/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/basic/main.vue
new file mode 100644
index 00000000..afe1e0f3
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/basic/main.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/basic/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.js b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.vue
new file mode 100644
index 00000000..98363439
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/main.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering-loading/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering/main.js b/vue-options-api-demos/dropdowns/dropdowntree/filtering/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/filtering/main.vue
new file mode 100644
index 00000000..f26b91eb
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering/main.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/filtering/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.js b/vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.vue
new file mode 100644
index 00000000..c50e2725
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/form/basic/main.vue
@@ -0,0 +1,129 @@
+
+
+
+
+ Fill your basket!
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/basic/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/form/basic/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/form/basic/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.js b/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.vue
new file mode 100644
index 00000000..c1c9db5e
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/main.vue
@@ -0,0 +1,143 @@
+
+
+
+
+ Fill your basket!
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/form/custom-message/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.js b/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.vue
new file mode 100644
index 00000000..1de6f706
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/main.vue
@@ -0,0 +1,156 @@
+
+
+
+
+ Fill your basket!
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/form/disabled-styles/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/override/main.js b/vue-options-api-demos/dropdowns/dropdowntree/form/override/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/form/override/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/override/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/form/override/main.vue
new file mode 100644
index 00000000..d2b714bd
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/form/override/main.vue
@@ -0,0 +1,154 @@
+
+
+
+
+ Fill your basket!
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/form/override/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/form/override/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/form/override/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.js b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.vue
new file mode 100644
index 00000000..105d108f
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/main.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+ SomeHeader
+
+
+
+
+ SomeFooter
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/header-footer/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/item-template/main.js b/vue-options-api-demos/dropdowns/dropdowntree/item-template/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/item-template/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/item-template/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/item-template/main.vue
new file mode 100644
index 00000000..5fe826ea
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/item-template/main.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+ {{ props.item.text }}
+
+
+
+
+
+ - {{props.value.text}}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data.js
new file mode 100644
index 00000000..4fc5bfec
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/item-template/tree-data.js
@@ -0,0 +1,28 @@
+export const data = [ {
+ text: 'My Documents', id: 1,
+ items: [
+ {
+ text: 'Kendo UI for Vue Project', id: 2,
+ items: [
+ { text: 'about.html', id: 3 },
+ { text: 'index.html', id: 4 },
+ { text: 'logo.png', id: 5 }
+ ]
+ },
+ {
+ text: 'New Web Site', id: 6,
+ items: [
+ { text: 'mockup.jpg', id: 7 },
+ { text: 'Research.pdf', id: 8 }
+ ]
+ },
+ {
+ text: 'Reports', id: 9,
+ items: [
+ { text: 'February.pdf', id: 10 },
+ { text: 'March.pdf', id: 11 },
+ { text: 'April.pdf', id: 12 }
+ ]
+ }
+ ]
+} ];
\ No newline at end of file
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/no-data/main.js b/vue-options-api-demos/dropdowns/dropdowntree/no-data/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/no-data/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/no-data/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/no-data/main.vue
new file mode 100644
index 00000000..e6f89ce0
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/no-data/main.vue
@@ -0,0 +1,87 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/no-data/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/no-data/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/no-data/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/overview/main.js b/vue-options-api-demos/dropdowns/dropdowntree/overview/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/overview/main.vue b/vue-options-api-demos/dropdowns/dropdowntree/overview/main.vue
new file mode 100644
index 00000000..b7efaa29
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/overview/main.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data-operations.js b/vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data.js b/vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/dropdowntree/overview/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/globalization/es.json b/vue-options-api-demos/dropdowns/globalization/es.json
new file mode 100644
index 00000000..dc3df71d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/globalization/es.json
@@ -0,0 +1,6 @@
+{
+ "dropdowns": {
+ "nodata": "DATOS NO ENCONTRADOS.",
+ "clear": "claro"
+ }
+}
diff --git a/vue-options-api-demos/dropdowns/globalization/main.js b/vue-options-api-demos/dropdowns/globalization/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/globalization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/globalization/main.vue b/vue-options-api-demos/dropdowns/globalization/main.vue
new file mode 100644
index 00000000..77e3f2ba
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/globalization/main.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/dropdowns/label/main.js b/vue-options-api-demos/dropdowns/label/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/label/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/label/main.vue b/vue-options-api-demos/dropdowns/label/main.vue
new file mode 100644
index 00000000..dc92f64a
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/label/main.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/dropdowns/label/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/label/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/label/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/label/tree-data-operations.js b/vue-options-api-demos/dropdowns/label/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/label/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/label/tree-data.js b/vue-options-api-demos/dropdowns/label/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/label/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/grouping-data.js b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/grouping-data.js
new file mode 100644
index 00000000..9f42ec6e
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/grouping-data.js
@@ -0,0 +1,200 @@
+export const employees = [
+ {
+ id: 11,
+ name: "Hyacinth Hood",
+ reportsTo: 32,
+ phone: "(889) 345-2438",
+ extension: 8564,
+ hireDate: new Date("2014-02-03T20:00:00.000Z"),
+ fullTime: true,
+ position: "Team Lead",
+ timeInPosition: 1,
+ },
+ {
+ id: 40,
+ name: "Karleigh Garza",
+ reportsTo: 52,
+ phone: "(370) 983-8796",
+ extension: 4044,
+ hireDate: new Date("2014-03-10T00:00:00.000Z"),
+ fullTime: true,
+ position: "Team Lead",
+ timeInPosition: 1,
+ },
+ {
+ id: 46,
+ name: "Darrel Solis",
+ reportsTo: 43,
+ phone: "(327) 977-0216",
+ extension: 7779,
+ hireDate: new Date("2015-04-25T00:00:00.000Z"),
+ fullTime: true,
+ position: "Team Lead",
+ timeInPosition: 4,
+ },
+ {
+ id: 76,
+ name: "Cheyenne Olson",
+ reportsTo: 63,
+ phone: "(241) 645-0257",
+ extension: 9181,
+ hireDate: new Date("2015-05-19T00:00:00.000Z"),
+ fullTime: true,
+ position: "Developer",
+ timeInPosition: 5,
+ },
+ {
+ id: 78,
+ name: "Rinah Simon",
+ reportsTo: 11,
+ phone: "(285) 912-5271",
+ extension: 7795,
+ hireDate: new Date("2012-10-11T00:00:00.000Z"),
+ fullTime: true,
+ position: "Developer",
+ timeInPosition: 4,
+ },
+ {
+ id: 79,
+ name: "Duncan Mathews",
+ reportsTo: 64,
+ phone: "(790) 971-9709",
+ extension: 4573,
+ hireDate: new Date("2011-08-21T00:00:00.000Z"),
+ fullTime: false,
+ position: "Developer",
+ timeInPosition: 3,
+ },
+ {
+ id: 82,
+ name: "Yael Walters",
+ reportsTo: 69,
+ phone: "(311) 489-8191",
+ extension: 6520,
+ hireDate: new Date("2013-07-04T00:00:00.000Z"),
+ fullTime: true,
+ position: "Developer",
+ timeInPosition: 6,
+ },
+ {
+ id: 75,
+ name: "Eric Russell",
+ reportsTo: 63,
+ phone: "(516) 575-8505",
+ extension: 2224,
+ hireDate: new Date("2012-10-28T00:00:00.000Z"),
+ fullTime: true,
+ position: "Developer",
+ timeInPosition: 3,
+ },
+ {
+ id: 55,
+ name: "Summer Mosley",
+ reportsTo: 46,
+ phone: "(784) 962-2301",
+ extension: 5492,
+ hireDate: new Date("2010-03-02T00:00:00.000Z"),
+ fullTime: true,
+ position: "QA",
+ timeInPosition: 5,
+ },
+ {
+ id: 59,
+ name: "Keiko Espinoza",
+ reportsTo: 46,
+ phone: "(226) 600-5305",
+ extension: 9363,
+ hireDate: new Date("2011-09-18T00:00:00.000Z"),
+ fullTime: true,
+ position: "QA",
+ timeInPosition: 4,
+ },
+ {
+ id: 72,
+ name: "Stacey Lynn",
+ reportsTo: 40,
+ phone: "(140) 772-7509",
+ extension: 8396,
+ hireDate: new Date("2014-07-31T00:00:00.000Z"),
+ fullTime: false,
+ position: "QA",
+ timeInPosition: 1,
+ },
+ {
+ id: 38,
+ name: "Elton Tucker",
+ reportsTo: 69,
+ phone: "(988) 930-9331",
+ extension: 9216,
+ hireDate: new Date("2015-06-04T00:00:00.000Z"),
+ fullTime: true,
+ position: "Support",
+ timeInPosition: 1,
+ },
+ {
+ id: 71,
+ name: "Flavia Short",
+ reportsTo: 63,
+ phone: "(370) 133-9238",
+ extension: 6390,
+ hireDate: new Date("2013-02-21T00:00:00.000Z"),
+ fullTime: true,
+ position: "Support",
+ timeInPosition: 0,
+ },
+ {
+ id: 61,
+ name: "Candace Pickett",
+ reportsTo: 46,
+ phone: "(120) 117-7475",
+ extension: 5178,
+ hireDate: new Date("2010-05-06T00:00:00.000Z"),
+ fullTime: true,
+ position: "Support",
+ timeInPosition: 0,
+ },
+ {
+ id: 65,
+ name: "Thomas Terry",
+ reportsTo: 63,
+ phone: "(764) 831-4248",
+ extension: 3574,
+ hireDate: new Date("2015-06-15T00:00:00.000Z"),
+ fullTime: false,
+ position: "Support",
+ timeInPosition: 2,
+ },
+ {
+ id: 62,
+ name: "Palmer Gregory",
+ reportsTo: 64,
+ phone: "(360) 430-2505",
+ extension: 4337,
+ hireDate: new Date("2014-08-30T00:00:00.000Z"),
+ fullTime: true,
+ position: "Designer",
+ timeInPosition: 4,
+ },
+ {
+ id: 12,
+ name: "Jamalia Wallace",
+ reportsTo: 64,
+ phone: "(611) 391-8016",
+ extension: 1952,
+ hireDate: new Date("2011-09-08T00:00:00.000Z"),
+ fullTime: true,
+ position: "Designer",
+ timeInPosition: 3,
+ },
+ {
+ id: 66,
+ name: "Gloria Freeman",
+ reportsTo: 53,
+ phone: "(344) 950-9168",
+ extension: 4738,
+ hireDate: new Date("2013-05-06T00:00:00.000Z"),
+ fullTime: true,
+ position: "Designer",
+ timeInPosition: 0,
+ },
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.js b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.vue b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.vue
new file mode 100644
index 00000000..aa26a895
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering-grouping/main.vue
@@ -0,0 +1,28 @@
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.js b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.vue b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.vue
new file mode 100644
index 00000000..c16bb70b
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/adaptive-rendering/main.vue
@@ -0,0 +1,56 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.js b/vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.vue b/vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.vue
new file mode 100644
index 00000000..7ad786cd
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/allow-custom-object-data/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+ Selected Values: {{value}}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.js b/vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.vue b/vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.vue
new file mode 100644
index 00000000..1942e4e4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/allow-custom-values/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
Favorite sports: {{value}}
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/DropDownStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/DropDownStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.js b/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.vue b/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.vue
new file mode 100644
index 00000000..8fd92c94
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/appearance/configurator/main.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.js b/vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.vue b/vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..b2c0ea94
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/appearance/fill-mode/main.vue
@@ -0,0 +1,95 @@
+
+
+
+
+ Flat:
+
+
+
+ Solid:
+
+
+
+ Outline:
+
+
+
+
+
+ Custom fill mode:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.js b/vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.vue b/vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.vue
new file mode 100644
index 00000000..a0bb0b54
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/appearance/rounded/main.vue
@@ -0,0 +1,110 @@
+
+
+
+
+ Small roundness:
+
+
+
+ Medium roundness:
+
+
+
+ Large roundness:
+
+
+
+
+
+ Full roundness:
+
+
+
+ Custom roundness:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/size/main.js b/vue-options-api-demos/dropdowns/multiselect/appearance/size/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/appearance/size/main.vue b/vue-options-api-demos/dropdowns/multiselect/appearance/size/main.vue
new file mode 100644
index 00000000..c50a02b0
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/appearance/size/main.vue
@@ -0,0 +1,92 @@
+
+
+
+
+ Small:
+
+
+
+ Medium:
+
+
+
+ Large:
+
+
+
+
+ Custom size:
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/basic/main.js b/vue-options-api-demos/dropdowns/multiselect/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/basic/main.vue b/vue-options-api-demos/dropdowns/multiselect/basic/main.vue
new file mode 100644
index 00000000..731f4a84
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/basic/main.vue
@@ -0,0 +1,29 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/binding/main.js b/vue-options-api-demos/dropdowns/multiselect/binding/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/binding/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/binding/main.vue b/vue-options-api-demos/dropdowns/multiselect/binding/main.vue
new file mode 100644
index 00000000..68743f9a
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/binding/main.vue
@@ -0,0 +1,26 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/complex-value/main.js b/vue-options-api-demos/dropdowns/multiselect/complex-value/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/complex-value/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/complex-value/main.vue b/vue-options-api-demos/dropdowns/multiselect/complex-value/main.vue
new file mode 100644
index 00000000..bb259a3d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/complex-value/main.vue
@@ -0,0 +1,45 @@
+
+
+
+
+ Selected Values: {{value}}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/controlled/main.js b/vue-options-api-demos/dropdowns/multiselect/controlled/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/controlled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/controlled/main.vue b/vue-options-api-demos/dropdowns/multiselect/controlled/main.vue
new file mode 100644
index 00000000..fa39c7e3
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/controlled/main.vue
@@ -0,0 +1,33 @@
+
+
+
+
T-shirt sizes: {{ value }}
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/events/countries.js b/vue-options-api-demos/dropdowns/multiselect/events/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/events/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/events/main.js b/vue-options-api-demos/dropdowns/multiselect/events/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/events/main.vue b/vue-options-api-demos/dropdowns/multiselect/events/main.vue
new file mode 100644
index 00000000..013779aa
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/events/main.vue
@@ -0,0 +1,67 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/basic/countries.js b/vue-options-api-demos/dropdowns/multiselect/filtering/basic/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/filtering/basic/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.js b/vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.vue b/vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.vue
new file mode 100644
index 00000000..a6b0eedf
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/filtering/basic/main.vue
@@ -0,0 +1,34 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/countries.js b/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.js b/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.vue b/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.vue
new file mode 100644
index 00000000..f29a9200
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/filtering/minfilter/main.vue
@@ -0,0 +1,39 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.js b/vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.vue b/vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.vue
new file mode 100644
index 00000000..dc1221c7
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/filtering/virtualization-remote-data/main.vue
@@ -0,0 +1,143 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/countries.js b/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.js b/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.vue b/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.vue
new file mode 100644
index 00000000..2a6ad2ac
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/filtering/with-delay/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/basic/main.js b/vue-options-api-demos/dropdowns/multiselect/forms/basic/main.js
new file mode 100644
index 00000000..3a6df88d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/forms/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+
+createApp(App).mount("#app");
diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/basic/main.vue b/vue-options-api-demos/dropdowns/multiselect/forms/basic/main.vue
new file mode 100644
index 00000000..d610f742
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/forms/basic/main.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+ Add products to your basket:
+
+
+
+
+
+
+
+ Add to basket
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/basic/shop.js b/vue-options-api-demos/dropdowns/multiselect/forms/basic/shop.js
new file mode 100644
index 00000000..bc7a6c93
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/forms/basic/shop.js
@@ -0,0 +1,31 @@
+export const foods = [
+ 'Garlic bread',
+ 'Chicken nuggets',
+ 'Potatoes',
+ 'Rice',
+ 'Tomato sauce',
+ 'Broccoli',
+ 'Cheddar',
+ 'Cereal',
+ 'Beef',
+ 'Lobster',
+ 'Salmon',
+ 'Mushrooms',
+ 'Onions',
+ 'Apples',
+ 'Oranges',
+ 'Burritos'
+];
+
+export const drinks = [
+ 'Milk',
+ 'Water',
+ 'Apple juice',
+ 'Orange juice',
+ 'Beer',
+ 'Soda',
+ 'Champagne',
+ 'Red wine',
+ 'Rum',
+ 'Sake'
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.js b/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.vue b/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.vue
new file mode 100644
index 00000000..04843ced
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/main.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+ Add products to your basket:
+
+
+
+
+
+
+
+ Add to basket
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/shop.js b/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/shop.js
new file mode 100644
index 00000000..bc7a6c93
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/forms/custom-message/shop.js
@@ -0,0 +1,31 @@
+export const foods = [
+ 'Garlic bread',
+ 'Chicken nuggets',
+ 'Potatoes',
+ 'Rice',
+ 'Tomato sauce',
+ 'Broccoli',
+ 'Cheddar',
+ 'Cereal',
+ 'Beef',
+ 'Lobster',
+ 'Salmon',
+ 'Mushrooms',
+ 'Onions',
+ 'Apples',
+ 'Oranges',
+ 'Burritos'
+];
+
+export const drinks = [
+ 'Milk',
+ 'Water',
+ 'Apple juice',
+ 'Orange juice',
+ 'Beer',
+ 'Soda',
+ 'Champagne',
+ 'Red wine',
+ 'Rum',
+ 'Sake'
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.js b/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.vue b/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.vue
new file mode 100644
index 00000000..78691ade
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/main.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+ Add products to your basket:
+
+
+
+
+
+
+
+ Additional Comments
+
+
+
+ Add to basket
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/shop.js b/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/shop.js
new file mode 100644
index 00000000..bc7a6c93
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/forms/disable-styles/shop.js
@@ -0,0 +1,31 @@
+export const foods = [
+ 'Garlic bread',
+ 'Chicken nuggets',
+ 'Potatoes',
+ 'Rice',
+ 'Tomato sauce',
+ 'Broccoli',
+ 'Cheddar',
+ 'Cereal',
+ 'Beef',
+ 'Lobster',
+ 'Salmon',
+ 'Mushrooms',
+ 'Onions',
+ 'Apples',
+ 'Oranges',
+ 'Burritos'
+];
+
+export const drinks = [
+ 'Milk',
+ 'Water',
+ 'Apple juice',
+ 'Orange juice',
+ 'Beer',
+ 'Soda',
+ 'Champagne',
+ 'Red wine',
+ 'Rum',
+ 'Sake'
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/override/main.js b/vue-options-api-demos/dropdowns/multiselect/forms/override/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/forms/override/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/override/main.vue b/vue-options-api-demos/dropdowns/multiselect/forms/override/main.vue
new file mode 100644
index 00000000..a2a2eb0e
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/forms/override/main.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+ Add products to your basket:
+
+
+
+
+
+
+
+ Additional Comments
+
+
+
+ Add to basket
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/forms/override/shop.js b/vue-options-api-demos/dropdowns/multiselect/forms/override/shop.js
new file mode 100644
index 00000000..bc7a6c93
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/forms/override/shop.js
@@ -0,0 +1,31 @@
+export const foods = [
+ 'Garlic bread',
+ 'Chicken nuggets',
+ 'Potatoes',
+ 'Rice',
+ 'Tomato sauce',
+ 'Broccoli',
+ 'Cheddar',
+ 'Cereal',
+ 'Beef',
+ 'Lobster',
+ 'Salmon',
+ 'Mushrooms',
+ 'Onions',
+ 'Apples',
+ 'Oranges',
+ 'Burritos'
+];
+
+export const drinks = [
+ 'Milk',
+ 'Water',
+ 'Apple juice',
+ 'Orange juice',
+ 'Beer',
+ 'Soda',
+ 'Champagne',
+ 'Red wine',
+ 'Rum',
+ 'Sake'
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/basic/grouping-data.js b/vue-options-api-demos/dropdowns/multiselect/grouping/basic/grouping-data.js
new file mode 100644
index 00000000..9a2711db
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/basic/grouping-data.js
@@ -0,0 +1,181 @@
+export const employees = [ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date("2014-02-03T20:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date("2014-03-10T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date("2015-04-25T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+}, {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date("2015-05-19T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 5
+}, {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date("2012-10-11T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 4
+}, {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date("2011-08-21T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date("2013-07-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 6
+}, {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date("2012-10-28T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date("2010-03-02T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 5
+}, {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date("2011-09-18T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 4
+}, {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date("2014-07-31T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "QA",
+ "timeInPosition": 1
+}, {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date("2015-06-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 1
+}, {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date("2013-02-21T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date("2010-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date("2015-06-15T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Support",
+ "timeInPosition": 2
+}, {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date("2014-08-30T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+}, {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date("2011-09-08T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 3
+}, {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date("2013-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 0
+} ];
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.js b/vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.js
new file mode 100644
index 00000000..3a6df88d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+
+createApp(App).mount("#app");
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.vue
new file mode 100644
index 00000000..99994ef6
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/basic/main.vue
@@ -0,0 +1,30 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/custom/GroupHeaderItemRender.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/GroupHeaderItemRender.vue
new file mode 100644
index 00000000..d2c8a237
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/GroupHeaderItemRender.vue
@@ -0,0 +1,21 @@
+
+
+
+ {{group}}
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/custom/ItemRender.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/ItemRender.vue
new file mode 100644
index 00000000..0967fc13
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/ItemRender.vue
@@ -0,0 +1,42 @@
+
+
+
+ {{ dataItem[textField] }} {{ index }}
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/custom/StickyHeaderRender.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/StickyHeaderRender.vue
new file mode 100644
index 00000000..60e0a1aa
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/StickyHeaderRender.vue
@@ -0,0 +1,22 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/custom/grouping-data.js b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/grouping-data.js
new file mode 100644
index 00000000..9a2711db
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/grouping-data.js
@@ -0,0 +1,181 @@
+export const employees = [ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date("2014-02-03T20:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date("2014-03-10T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+}, {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date("2015-04-25T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+}, {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date("2015-05-19T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 5
+}, {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date("2012-10-11T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 4
+}, {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date("2011-08-21T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date("2013-07-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 6
+}, {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date("2012-10-28T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Developer",
+ "timeInPosition": 3
+}, {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date("2010-03-02T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 5
+}, {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date("2011-09-18T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "QA",
+ "timeInPosition": 4
+}, {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date("2014-07-31T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "QA",
+ "timeInPosition": 1
+}, {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date("2015-06-04T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 1
+}, {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date("2013-02-21T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date("2010-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Support",
+ "timeInPosition": 0
+}, {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date("2015-06-15T00:00:00.000Z"),
+ "fullTime": false,
+ "position": "Support",
+ "timeInPosition": 2
+}, {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date("2014-08-30T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+}, {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date("2011-09-08T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 3
+}, {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date("2013-05-06T00:00:00.000Z"),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 0
+} ];
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.js b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.js
new file mode 100644
index 00000000..3a6df88d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+
+createApp(App).mount("#app");
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.vue
new file mode 100644
index 00000000..4c9231f4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/custom/main.vue
@@ -0,0 +1,62 @@
+
+
+
+ props.onClick(ev)"
+ />
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/grouping-data.js b/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/grouping-data.js
new file mode 100644
index 00000000..94e1ef7b
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/grouping-data.js
@@ -0,0 +1,200 @@
+export const employees = [
+ {
+ id: 11,
+ name: "Hyacinth Hood",
+ reportsTo: 32,
+ phone: "(889) 345-2438",
+ extension: 8564,
+ hireDate: new Date("2014-02-03T20:00:00.000Z"),
+ fullTime: true,
+ role: "Team Lead",
+ timeInPosition: 1,
+ },
+ {
+ id: 40,
+ name: "Karleigh Garza",
+ reportsTo: 52,
+ phone: "(370) 983-8796",
+ extension: 4044,
+ hireDate: new Date("2014-03-10T00:00:00.000Z"),
+ fullTime: true,
+ role: "Team Lead",
+ timeInPosition: 1,
+ },
+ {
+ id: 46,
+ name: "Darrel Solis",
+ reportsTo: 43,
+ phone: "(327) 977-0216",
+ extension: 7779,
+ hireDate: new Date("2015-04-25T00:00:00.000Z"),
+ fullTime: true,
+ role: "Team Lead",
+ timeInPosition: 4,
+ },
+ {
+ id: 76,
+ name: "Cheyenne Olson",
+ reportsTo: 63,
+ phone: "(241) 645-0257",
+ extension: 9181,
+ hireDate: new Date("2015-05-19T00:00:00.000Z"),
+ fullTime: true,
+ role: "Developer",
+ timeInPosition: 5,
+ },
+ {
+ id: 78,
+ name: "Rinah Simon",
+ reportsTo: 11,
+ phone: "(285) 912-5271",
+ extension: 7795,
+ hireDate: new Date("2012-10-11T00:00:00.000Z"),
+ fullTime: true,
+ role: "Developer",
+ timeInPosition: 4,
+ },
+ {
+ id: 79,
+ name: "Duncan Mathews",
+ reportsTo: 64,
+ phone: "(790) 971-9709",
+ extension: 4573,
+ hireDate: new Date("2011-08-21T00:00:00.000Z"),
+ fullTime: false,
+ role: "Developer",
+ timeInPosition: 3,
+ },
+ {
+ id: 82,
+ name: "Yael Walters",
+ reportsTo: 69,
+ phone: "(311) 489-8191",
+ extension: 6520,
+ hireDate: new Date("2013-07-04T00:00:00.000Z"),
+ fullTime: true,
+ role: "Developer",
+ timeInPosition: 6,
+ },
+ {
+ id: 75,
+ name: "Eric Russell",
+ reportsTo: 63,
+ phone: "(516) 575-8505",
+ extension: 2224,
+ hireDate: new Date("2012-10-28T00:00:00.000Z"),
+ fullTime: true,
+ role: "Developer",
+ timeInPosition: 3,
+ },
+ {
+ id: 55,
+ name: "Summer Mosley",
+ reportsTo: 46,
+ phone: "(784) 962-2301",
+ extension: 5492,
+ hireDate: new Date("2010-03-02T00:00:00.000Z"),
+ fullTime: true,
+ role: "QA",
+ timeInPosition: 5,
+ },
+ {
+ id: 59,
+ name: "Keiko Espinoza",
+ reportsTo: 46,
+ phone: "(226) 600-5305",
+ extension: 9363,
+ hireDate: new Date("2011-09-18T00:00:00.000Z"),
+ fullTime: true,
+ role: "QA",
+ timeInPosition: 4,
+ },
+ {
+ id: 72,
+ name: "Stacey Lynn",
+ reportsTo: 40,
+ phone: "(140) 772-7509",
+ extension: 8396,
+ hireDate: new Date("2014-07-31T00:00:00.000Z"),
+ fullTime: false,
+ role: "QA",
+ timeInPosition: 1,
+ },
+ {
+ id: 38,
+ name: "Elton Tucker",
+ reportsTo: 69,
+ phone: "(988) 930-9331",
+ extension: 9216,
+ hireDate: new Date("2015-06-04T00:00:00.000Z"),
+ fullTime: true,
+ role: "Support",
+ timeInPosition: 1,
+ },
+ {
+ id: 71,
+ name: "Flavia Short",
+ reportsTo: 63,
+ phone: "(370) 133-9238",
+ extension: 6390,
+ hireDate: new Date("2013-02-21T00:00:00.000Z"),
+ fullTime: true,
+ role: "Support",
+ timeInPosition: 0,
+ },
+ {
+ id: 61,
+ name: "Candace Pickett",
+ reportsTo: 46,
+ phone: "(120) 117-7475",
+ extension: 5178,
+ hireDate: new Date("2010-05-06T00:00:00.000Z"),
+ fullTime: true,
+ role: "Support",
+ timeInPosition: 0,
+ },
+ {
+ id: 65,
+ name: "Thomas Terry",
+ reportsTo: 63,
+ phone: "(764) 831-4248",
+ extension: 3574,
+ hireDate: new Date("2015-06-15T00:00:00.000Z"),
+ fullTime: false,
+ role: "Support",
+ timeInPosition: 2,
+ },
+ {
+ id: 62,
+ name: "Palmer Gregory",
+ reportsTo: 64,
+ phone: "(360) 430-2505",
+ extension: 4337,
+ hireDate: new Date("2014-08-30T00:00:00.000Z"),
+ fullTime: true,
+ role: "Designer",
+ timeInPosition: 4,
+ },
+ {
+ id: 12,
+ name: "Jamalia Wallace",
+ reportsTo: 64,
+ phone: "(611) 391-8016",
+ extension: 1952,
+ hireDate: new Date("2011-09-08T00:00:00.000Z"),
+ fullTime: true,
+ role: "Designer",
+ timeInPosition: 3,
+ },
+ {
+ id: 66,
+ name: "Gloria Freeman",
+ reportsTo: 53,
+ phone: "(344) 950-9168",
+ extension: 4738,
+ hireDate: new Date("2013-05-06T00:00:00.000Z"),
+ fullTime: true,
+ role: "Designer",
+ timeInPosition: 0,
+ },
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.js b/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.js
new file mode 100644
index 00000000..3a6df88d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+
+createApp(App).mount("#app");
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.vue
new file mode 100644
index 00000000..7163909f
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/filtering/main.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.js b/vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.js
new file mode 100644
index 00000000..3a6df88d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+
+createApp(App).mount("#app");
diff --git a/vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.vue b/vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.vue
new file mode 100644
index 00000000..483b654f
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/grouping/virtualization/main.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/header-footer/FooterRender.vue b/vue-options-api-demos/dropdowns/multiselect/header-footer/FooterRender.vue
new file mode 100644
index 00000000..328e96da
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/header-footer/FooterRender.vue
@@ -0,0 +1,12 @@
+
+
+ footer
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/header-footer/HeaderRender.vue b/vue-options-api-demos/dropdowns/multiselect/header-footer/HeaderRender.vue
new file mode 100644
index 00000000..dd7e5d25
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/header-footer/HeaderRender.vue
@@ -0,0 +1,12 @@
+
+
+ header
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/header-footer/countries.js b/vue-options-api-demos/dropdowns/multiselect/header-footer/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/header-footer/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/header-footer/main.js b/vue-options-api-demos/dropdowns/multiselect/header-footer/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/header-footer/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/header-footer/main.vue b/vue-options-api-demos/dropdowns/multiselect/header-footer/main.vue
new file mode 100644
index 00000000..e8444a2e
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/header-footer/main.vue
@@ -0,0 +1,41 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/item-render/ItemRender.vue b/vue-options-api-demos/dropdowns/multiselect/item-render/ItemRender.vue
new file mode 100644
index 00000000..b6f32ec7
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/item-render/ItemRender.vue
@@ -0,0 +1,27 @@
+
+
+
+ {{dataItem}} {{index}}
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/item-render/countries.js b/vue-options-api-demos/dropdowns/multiselect/item-render/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/item-render/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/item-render/main.js b/vue-options-api-demos/dropdowns/multiselect/item-render/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/item-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/item-render/main.vue b/vue-options-api-demos/dropdowns/multiselect/item-render/main.vue
new file mode 100644
index 00000000..17fbe982
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/item-render/main.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+ props.onClick(ev)" />
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/nodata-render/NoDataRender.vue b/vue-options-api-demos/dropdowns/multiselect/nodata-render/NoDataRender.vue
new file mode 100644
index 00000000..9c42c161
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/nodata-render/NoDataRender.vue
@@ -0,0 +1,12 @@
+
+
+
+
+ no data here
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/nodata-render/main.js b/vue-options-api-demos/dropdowns/multiselect/nodata-render/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/nodata-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/nodata-render/main.vue b/vue-options-api-demos/dropdowns/multiselect/nodata-render/main.vue
new file mode 100644
index 00000000..c4dff0ab
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/nodata-render/main.vue
@@ -0,0 +1,33 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/summary-tag/countries.js b/vue-options-api-demos/dropdowns/multiselect/summary-tag/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/summary-tag/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/multiselect/summary-tag/main.js b/vue-options-api-demos/dropdowns/multiselect/summary-tag/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/summary-tag/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/summary-tag/main.vue b/vue-options-api-demos/dropdowns/multiselect/summary-tag/main.vue
new file mode 100644
index 00000000..d8005cb0
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/summary-tag/main.vue
@@ -0,0 +1,45 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/tags/main.js b/vue-options-api-demos/dropdowns/multiselect/tags/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/tags/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/tags/main.vue b/vue-options-api-demos/dropdowns/multiselect/tags/main.vue
new file mode 100644
index 00000000..43a58337
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/tags/main.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ {{sizes.indexOf(props.tagData.data[0])}} - {{props.tagData.text}}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/tags/styles.css b/vue-options-api-demos/dropdowns/multiselect/tags/styles.css
new file mode 100644
index 00000000..3d617b6c
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/tags/styles.css
@@ -0,0 +1,10 @@
+.custom-tag {
+ display: inline-block;
+ background: #333;
+ color: #fff;
+ border-radius: 50%;
+ width: 18px;
+ height: 18px;
+ text-align: center;
+ margin-right: 3px;
+}
diff --git a/vue-options-api-demos/dropdowns/multiselect/value-primitive/main.js b/vue-options-api-demos/dropdowns/multiselect/value-primitive/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/value-primitive/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/value-primitive/main.vue b/vue-options-api-demos/dropdowns/multiselect/value-primitive/main.vue
new file mode 100644
index 00000000..b7cc7ec6
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/value-primitive/main.vue
@@ -0,0 +1,61 @@
+
+
+
Selected Value: {{ multiSelectValues }}
+
+ value and change
+
+
+
+
+
+ v-model
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.js b/vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.vue b/vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.vue
new file mode 100644
index 00000000..e52469ce
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/virtualization/basic/main.vue
@@ -0,0 +1,60 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.js b/vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.vue b/vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.vue
new file mode 100644
index 00000000..b120cb10
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselect/virtualization/filtering/main.vue
@@ -0,0 +1,76 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.js b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.vue
new file mode 100644
index 00000000..b790104f
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/main.vue
@@ -0,0 +1,88 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/adaptive-rendering/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/DropDownStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/DropDownStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.vue
new file mode 100644
index 00000000..d9251048
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/main.vue
@@ -0,0 +1,112 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/configurator/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..549c0978
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/main.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/fill-mode/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.vue
new file mode 100644
index 00000000..df77153f
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/main.vue
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/rounded/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.vue
new file mode 100644
index 00000000..3297046a
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/main.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/appearance/size/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/basic/main.js b/vue-options-api-demos/dropdowns/multiselecttree/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/basic/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/basic/main.vue
new file mode 100644
index 00000000..8b6de934
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/basic/main.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/basic/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/basic/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/basic/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/basic/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/basic/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/basic/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/binding/main.js b/vue-options-api-demos/dropdowns/multiselecttree/binding/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/binding/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/binding/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/binding/main.vue
new file mode 100644
index 00000000..fa29c63d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/binding/main.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/binding/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/binding/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/binding/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/binding/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/binding/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/binding/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/controlled/main.js b/vue-options-api-demos/dropdowns/multiselecttree/controlled/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/controlled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/controlled/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/controlled/main.vue
new file mode 100644
index 00000000..513fd636
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/controlled/main.vue
@@ -0,0 +1,98 @@
+
+
+
MultiSelectTree Value: {{ value }}
+
+
Value property + change event
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/controlled/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/controlled/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/controlled/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/controlled/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/controlled/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/controlled/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.js b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.vue
new file mode 100644
index 00000000..fd99cdcb
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/main.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+ {{ props.item.text }}
+
+
+
+
+
+ - {{props.tagData.text}}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/tree-files-data.js b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/tree-files-data.js
new file mode 100644
index 00000000..4fc5bfec
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/custom-rendering/tree-files-data.js
@@ -0,0 +1,28 @@
+export const data = [ {
+ text: 'My Documents', id: 1,
+ items: [
+ {
+ text: 'Kendo UI for Vue Project', id: 2,
+ items: [
+ { text: 'about.html', id: 3 },
+ { text: 'index.html', id: 4 },
+ { text: 'logo.png', id: 5 }
+ ]
+ },
+ {
+ text: 'New Web Site', id: 6,
+ items: [
+ { text: 'mockup.jpg', id: 7 },
+ { text: 'Research.pdf', id: 8 }
+ ]
+ },
+ {
+ text: 'Reports', id: 9,
+ items: [
+ { text: 'February.pdf', id: 10 },
+ { text: 'March.pdf', id: 11 },
+ { text: 'April.pdf', id: 12 }
+ ]
+ }
+ ]
+} ];
\ No newline at end of file
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.js b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.vue
new file mode 100644
index 00000000..7a99de47
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/main.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering-with-delay/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering/main.js b/vue-options-api-demos/dropdowns/multiselecttree/filtering/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/filtering/main.vue
new file mode 100644
index 00000000..c86276c0
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering/main.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/filtering/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/filtering/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/filtering/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/filtering/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.vue
new file mode 100644
index 00000000..fb923fc5
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/main.vue
@@ -0,0 +1,152 @@
+
+
+
+
+ Fill your basket!
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/basic/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.vue
new file mode 100644
index 00000000..6fb00d6c
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/main.vue
@@ -0,0 +1,156 @@
+
+
+
+
+ Fill your basket!
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/custom-message/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.vue
new file mode 100644
index 00000000..e21b92f9
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/main.vue
@@ -0,0 +1,175 @@
+
+
+
+
+ Fill your basket!
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/disable-styles/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.vue
new file mode 100644
index 00000000..f97df3a4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/override/main.vue
@@ -0,0 +1,174 @@
+
+
+
+
+ Fill your basket!
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/forms/override/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/forms/override/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/forms/override/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.js b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.vue
new file mode 100644
index 00000000..45fbfd89
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/main.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+ SomeHeader
+
+
+
+
+ SomeFooter
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/header-footer/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/header-footer/tree-data.js b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/header-footer/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/no-data/main.js b/vue-options-api-demos/dropdowns/multiselecttree/no-data/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/no-data/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/multiselecttree/no-data/main.vue b/vue-options-api-demos/dropdowns/multiselecttree/no-data/main.vue
new file mode 100644
index 00000000..2eed6b67
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/multiselecttree/no-data/main.vue
@@ -0,0 +1,43 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/overview/main.js b/vue-options-api-demos/dropdowns/overview/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/overview/main.vue b/vue-options-api-demos/dropdowns/overview/main.vue
new file mode 100644
index 00000000..2fa432eb
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/overview/main.vue
@@ -0,0 +1,166 @@
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/overview/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/overview/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/overview/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/overview/tree-data-operations.js b/vue-options-api-demos/dropdowns/overview/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/overview/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/overview/tree-data.js b/vue-options-api-demos/dropdowns/overview/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/overview/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/rtl/main.js b/vue-options-api-demos/dropdowns/rtl/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/rtl/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/dropdowns/rtl/main.vue b/vue-options-api-demos/dropdowns/rtl/main.vue
new file mode 100644
index 00000000..a26354ae
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/rtl/main.vue
@@ -0,0 +1,173 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/dropdowns/rtl/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/rtl/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/rtl/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/rtl/tree-data-operations.js b/vue-options-api-demos/dropdowns/rtl/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/rtl/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/rtl/tree-data.js b/vue-options-api-demos/dropdowns/rtl/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/rtl/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/shared/DropDownStyleConfigurator.vue b/vue-options-api-demos/dropdowns/shared/DropDownStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/shared/DropDownStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/dropdowns/shared/countries.js b/vue-options-api-demos/dropdowns/shared/countries.js
new file mode 100644
index 00000000..45b6cb20
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/shared/countries.js
@@ -0,0 +1,52 @@
+export default [
+ "Albania",
+ "Andorra",
+ "Armenia",
+ "Austria",
+ "Azerbaijan",
+ "Belarus",
+ "Belgium",
+ "Bosnia & Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Cyprus",
+ "Czech Republic",
+ "Denmark",
+ "Estonia",
+ "Finland",
+ "France",
+ "Georgia",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Kosovo",
+ "Latvia",
+ "Liechtenstein",
+ "Lithuania",
+ "Luxembourg",
+ "Macedonia",
+ "Malta",
+ "Moldova",
+ "Monaco",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Russia",
+ "San Marino",
+ "Serbia",
+ "Slovakia",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "Ukraine",
+ "United Kingdom",
+ "Vatican City"
+];
diff --git a/vue-options-api-demos/dropdowns/shared/es.json b/vue-options-api-demos/dropdowns/shared/es.json
new file mode 100644
index 00000000..dc3df71d
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/shared/es.json
@@ -0,0 +1,6 @@
+{
+ "dropdowns": {
+ "nodata": "DATOS NO ENCONTRADOS.",
+ "clear": "claro"
+ }
+}
diff --git a/vue-options-api-demos/dropdowns/shared/multiselecttree-data-operations.js b/vue-options-api-demos/dropdowns/shared/multiselecttree-data-operations.js
new file mode 100644
index 00000000..50ff55a2
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/shared/multiselecttree-data-operations.js
@@ -0,0 +1,107 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { getter, setter } from '@progress/kendo-vue-common';
+
+export const getValueMap = (value, idGetter) => {
+ const map = {};
+
+ if (value && value.length) {
+ value.forEach((item) => {
+ map[idGetter(item)] = true;
+ });
+ }
+
+ return map;
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const keyGetter = getter(dataItemKey);
+ const itemKey = keyGetter(item);
+ const index = expanded.findIndex(currentKey => {
+ return currentKey === itemKey;
+ });
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
+
+const mapMultiSelectTreeData = (
+ data,
+ options
+) => {
+ const {
+ keyGetter,
+ subItemGetter,
+ subItemSetter,
+ checkSetter,
+ expandedSetter,
+ checkIndeterminateSetter,
+ valueMap,
+ expandedMap
+ } = options;
+
+ if (!data || !data.length) { return [data, false];}
+
+ let hasChecked = false;
+ const newData = [...data].map(dataItem => {
+ const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
+
+ const isChecked = valueMap[keyGetter(dataItem)];
+ if (isChecked || hasCheckedChildren) {
+ hasChecked = true;
+ }
+
+ const newItem = { ...dataItem };
+
+ expandedSetter(newItem, expandedMap[keyGetter(newItem)])
+ subItemSetter(newItem, children);
+ checkSetter(newItem, isChecked);
+ checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
+
+ return newItem;
+ });
+
+ return [newData, hasChecked];
+};
+
+/**
+ * Creates a new array with the results of calling the provided callback function
+ * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
+ */
+export const processMultiSelectTreeData = (
+ tree,
+ options
+) => {
+ const {
+ subItemsField = 'items',
+ checkField = 'checkField',
+ checkIndeterminateField = 'checkIndeterminateField',
+ expandField = 'expanded',
+ dataItemKey,
+ value,
+ filter,
+ expanded
+ } = options;
+
+ const keyGetter = getter(dataItemKey);
+ const filtering = Boolean(filter && filter.value);
+ const expandedMap = {};
+
+ expanded.forEach((id) => expandedMap[id] = true);
+
+ const [result] = mapMultiSelectTreeData(
+ tree,
+ {
+ valueMap: getValueMap(value, keyGetter),
+ expandedMap: expandedMap,
+ keyGetter,
+ expandedSetter: setter(expandField),
+ subItemGetter: getter(subItemsField),
+ subItemSetter: setter(subItemsField),
+ checkSetter: setter(checkField),
+ checkIndeterminateSetter: setter(checkIndeterminateField)
+ }
+ );
+
+ return filtering ? filterBy(result, [ filter ], subItemsField) : result;
+};
diff --git a/vue-options-api-demos/dropdowns/shared/shop.js b/vue-options-api-demos/dropdowns/shared/shop.js
new file mode 100644
index 00000000..bc7a6c93
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/shared/shop.js
@@ -0,0 +1,31 @@
+export const foods = [
+ 'Garlic bread',
+ 'Chicken nuggets',
+ 'Potatoes',
+ 'Rice',
+ 'Tomato sauce',
+ 'Broccoli',
+ 'Cheddar',
+ 'Cereal',
+ 'Beef',
+ 'Lobster',
+ 'Salmon',
+ 'Mushrooms',
+ 'Onions',
+ 'Apples',
+ 'Oranges',
+ 'Burritos'
+];
+
+export const drinks = [
+ 'Milk',
+ 'Water',
+ 'Apple juice',
+ 'Orange juice',
+ 'Beer',
+ 'Soda',
+ 'Champagne',
+ 'Red wine',
+ 'Rum',
+ 'Sake'
+];
diff --git a/vue-options-api-demos/dropdowns/shared/tree-data-operations.js b/vue-options-api-demos/dropdowns/shared/tree-data-operations.js
new file mode 100644
index 00000000..c32766b4
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/shared/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from '@progress/kendo-vue-data-tools';
+import { mapTree, extendDataItem } from '@progress/kendo-vue-common';
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [ filter ], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering ?
+ extendDataItem(item, subItemsField, props) :
+ { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/dropdowns/shared/tree-data.js b/vue-options-api-demos/dropdowns/shared/tree-data.js
new file mode 100644
index 00000000..5b749471
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/shared/tree-data.js
@@ -0,0 +1,15 @@
+export const data = [
+ {
+ text: 'Furniture', id: 1, items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ }, {
+ text: 'Decor', id: 5, items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
diff --git a/vue-options-api-demos/dropdowns/shared/tree-files-data.js b/vue-options-api-demos/dropdowns/shared/tree-files-data.js
new file mode 100644
index 00000000..4fc5bfec
--- /dev/null
+++ b/vue-options-api-demos/dropdowns/shared/tree-files-data.js
@@ -0,0 +1,28 @@
+export const data = [ {
+ text: 'My Documents', id: 1,
+ items: [
+ {
+ text: 'Kendo UI for Vue Project', id: 2,
+ items: [
+ { text: 'about.html', id: 3 },
+ { text: 'index.html', id: 4 },
+ { text: 'logo.png', id: 5 }
+ ]
+ },
+ {
+ text: 'New Web Site', id: 6,
+ items: [
+ { text: 'mockup.jpg', id: 7 },
+ { text: 'Research.pdf', id: 8 }
+ ]
+ },
+ {
+ text: 'Reports', id: 9,
+ items: [
+ { text: 'February.pdf', id: 10 },
+ { text: 'March.pdf', id: 11 },
+ { text: 'April.pdf', id: 12 }
+ ]
+ }
+ ]
+} ];
\ No newline at end of file
diff --git a/vue-options-api-demos/editor/all-tools/content.js b/vue-options-api-demos/editor/all-tools/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/all-tools/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/all-tools/main.js b/vue-options-api-demos/editor/all-tools/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/all-tools/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/all-tools/main.vue b/vue-options-api-demos/editor/all-tools/main.vue
new file mode 100644
index 00000000..ff0b027f
--- /dev/null
+++ b/vue-options-api-demos/editor/all-tools/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/controlled-value-doc/main.js b/vue-options-api-demos/editor/controlled-value-doc/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/controlled-value-doc/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/controlled-value-doc/main.vue b/vue-options-api-demos/editor/controlled-value-doc/main.vue
new file mode 100644
index 00000000..249a4968
--- /dev/null
+++ b/vue-options-api-demos/editor/controlled-value-doc/main.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/controlled-value-string/main.js b/vue-options-api-demos/editor/controlled-value-string/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/controlled-value-string/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/controlled-value-string/main.vue b/vue-options-api-demos/editor/controlled-value-string/main.vue
new file mode 100644
index 00000000..00a5dd8b
--- /dev/null
+++ b/vue-options-api-demos/editor/controlled-value-string/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/edit-built-in-tools/content-basic.js b/vue-options-api-demos/editor/edit-built-in-tools/content-basic.js
new file mode 100644
index 00000000..e02950c2
--- /dev/null
+++ b/vue-options-api-demos/editor/edit-built-in-tools/content-basic.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/edit-built-in-tools/main.js b/vue-options-api-demos/editor/edit-built-in-tools/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/edit-built-in-tools/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/edit-built-in-tools/main.vue b/vue-options-api-demos/editor/edit-built-in-tools/main.vue
new file mode 100644
index 00000000..a4eda7df
--- /dev/null
+++ b/vue-options-api-demos/editor/edit-built-in-tools/main.vue
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/events/Logger.vue b/vue-options-api-demos/editor/events/Logger.vue
new file mode 100644
index 00000000..aa04a80b
--- /dev/null
+++ b/vue-options-api-demos/editor/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/editor/events/content.js b/vue-options-api-demos/editor/events/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/events/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/events/main.js b/vue-options-api-demos/editor/events/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/events/main.vue b/vue-options-api-demos/editor/events/main.vue
new file mode 100644
index 00000000..9aebf7b8
--- /dev/null
+++ b/vue-options-api-demos/editor/events/main.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/find-replace/content-overview.js b/vue-options-api-demos/editor/find-replace/content-overview.js
new file mode 100644
index 00000000..136cfe6c
--- /dev/null
+++ b/vue-options-api-demos/editor/find-replace/content-overview.js
@@ -0,0 +1,3 @@
+const content = `
Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. In this version, the Editor provides the core HTML editing engine, which includes basic text formatting, hyperlinks, lists, and image handling. The widget outputs identical HTML across all major browsers, follows accessibility standards and provides multiple tools for content manipulation.
Features include:
Text formatting & alignment
Bulleted and numbered lists
Hyperlink and image dialogs
Identical HTML output across modern browsers
Highly customizable tools
The Editor has a table option as well, allowing to add and edit tabular data.
Product Id
Product Name
Price
1
Chai
18
2
Chang
19
3
Aniseed Syrup
10
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/find-replace/main.js b/vue-options-api-demos/editor/find-replace/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/find-replace/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/find-replace/main.vue b/vue-options-api-demos/editor/find-replace/main.vue
new file mode 100644
index 00000000..0f976f2a
--- /dev/null
+++ b/vue-options-api-demos/editor/find-replace/main.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/get-started/content.js b/vue-options-api-demos/editor/get-started/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/get-started/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/get-started/main.js b/vue-options-api-demos/editor/get-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/get-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/get-started/main.vue b/vue-options-api-demos/editor/get-started/main.vue
new file mode 100644
index 00000000..5b2f6deb
--- /dev/null
+++ b/vue-options-api-demos/editor/get-started/main.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/gets-and-sets-html/content.js b/vue-options-api-demos/editor/gets-and-sets-html/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/gets-and-sets-html/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/gets-and-sets-html/main.js b/vue-options-api-demos/editor/gets-and-sets-html/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/gets-and-sets-html/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/gets-and-sets-html/main.vue b/vue-options-api-demos/editor/gets-and-sets-html/main.vue
new file mode 100644
index 00000000..635b52be
--- /dev/null
+++ b/vue-options-api-demos/editor/gets-and-sets-html/main.vue
@@ -0,0 +1,75 @@
+
+
+
+
+ Gets HTML
+
+ Sets HTML
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/globalization/content.js b/vue-options-api-demos/editor/globalization/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/globalization/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/globalization/deMessages.js b/vue-options-api-demos/editor/globalization/deMessages.js
new file mode 100644
index 00000000..c596a7fb
--- /dev/null
+++ b/vue-options-api-demos/editor/globalization/deMessages.js
@@ -0,0 +1,43 @@
+export const deMessages = {
+ 'editor': {
+ 'bold': 'Fett',
+ 'italic': 'Kursiv',
+ 'underline': 'Unterstrichen',
+ 'strikethrough': 'Durchgestrichen',
+ 'subscript': 'Tiefgestellt',
+ 'superscript': 'Hochgestellt',
+ 'hyperlink': 'Hyperlink einfügen',
+ 'hyperlink-dialog-title': 'Hyperlink einfügen',
+ 'hyperlink-dialog-content-address': 'Web-Adresse',
+ 'hyperlink-dialog-content-title': 'Titel',
+ 'hyperlink-dialog-content-newwindow': 'Link in einem neuen Fenster öffnen',
+ 'hyperlink-dialog-cancel': 'Abbrechen',
+ 'hyperlink-dialog-insert': 'Einfügen',
+ 'image': 'Bild einfügen',
+ 'image-dialog-title': 'Bild einfügen',
+ 'image-address': 'Web-Adresse',
+ 'image-title': 'Titel',
+ 'image-altText': 'Abwechselnder Text',
+ 'image-width': 'Breite (px)',
+ 'image-height': 'Höhe (px)',
+ 'image-cancel': 'Abbrechen',
+ 'image-insert': 'Einfügen',
+ 'viewHtml': 'HTML anzeigen',
+ 'viewHtml-dialog-title': 'HTML anzeigen',
+ 'viewHtml-cancel': 'Abbrechen',
+ 'viewHtml-update': 'Aktualisieren',
+ 'unlink': 'Hyperlink entfernen',
+ 'undo': 'Rückgängig machen',
+ 'redo': 'Wiederholen',
+ 'fontSize': 'Größe',
+ 'fontName': 'Schrift',
+ 'format': 'Absatzstil',
+ 'alignLeft': 'Linksbündig',
+ 'alignRight': 'Rechtsbündig',
+ 'alignCenter': 'Zentriert',
+ 'indent': 'Einzug vergrößern',
+ 'outdent': 'Einzug verkleinern',
+ 'orderedList': 'Numerierte Liste',
+ 'bulletList': 'Aufzählliste'
+ }
+};
diff --git a/vue-options-api-demos/editor/globalization/main.js b/vue-options-api-demos/editor/globalization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/globalization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/globalization/main.vue b/vue-options-api-demos/editor/globalization/main.vue
new file mode 100644
index 00000000..44fb93e5
--- /dev/null
+++ b/vue-options-api-demos/editor/globalization/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/markdown/main.js b/vue-options-api-demos/editor/markdown/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/markdown/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/markdown/main.vue b/vue-options-api-demos/editor/markdown/main.vue
new file mode 100644
index 00000000..21b73853
--- /dev/null
+++ b/vue-options-api-demos/editor/markdown/main.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/markdown/markdown.js b/vue-options-api-demos/editor/markdown/markdown.js
new file mode 100644
index 00000000..068638a8
--- /dev/null
+++ b/vue-options-api-demos/editor/markdown/markdown.js
@@ -0,0 +1,16 @@
+export const markdown = `The Kendo UI for Vue Editor allows your users to edit markdown in a familiar, user-friendly way.
+The Editor provides core editing engine, which includes text formatting, hyperlinks, lists and more. The component **outputs identical Markdown** across all major browsers, follows accessibility standards, and provides API for content manipulation.
+
+Features include:
+
+* Text formatting
+
+* Bulleted and numbered lists
+
+* Hyperlinks
+
+* Images 
+
+* Cross-browser support
+
+* Identical output across browsers`;
diff --git a/vue-options-api-demos/editor/overview/content-overview.js b/vue-options-api-demos/editor/overview/content-overview.js
new file mode 100644
index 00000000..136cfe6c
--- /dev/null
+++ b/vue-options-api-demos/editor/overview/content-overview.js
@@ -0,0 +1,3 @@
+const content = `
Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. In this version, the Editor provides the core HTML editing engine, which includes basic text formatting, hyperlinks, lists, and image handling. The widget outputs identical HTML across all major browsers, follows accessibility standards and provides multiple tools for content manipulation.
Features include:
Text formatting & alignment
Bulleted and numbered lists
Hyperlink and image dialogs
Identical HTML output across modern browsers
Highly customizable tools
The Editor has a table option as well, allowing to add and edit tabular data.
Product Id
Product Name
Price
1
Chai
18
2
Chang
19
3
Aniseed Syrup
10
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/overview/main.js b/vue-options-api-demos/editor/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/overview/main.vue b/vue-options-api-demos/editor/overview/main.vue
new file mode 100644
index 00000000..8a976165
--- /dev/null
+++ b/vue-options-api-demos/editor/overview/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/paste/main.js b/vue-options-api-demos/editor/paste/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/paste/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/paste/main.vue b/vue-options-api-demos/editor/paste/main.vue
new file mode 100644
index 00000000..fc714945
--- /dev/null
+++ b/vue-options-api-demos/editor/paste/main.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/plugins/placeholder/main.js b/vue-options-api-demos/editor/plugins/placeholder/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/plugins/placeholder/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/plugins/placeholder/main.vue b/vue-options-api-demos/editor/plugins/placeholder/main.vue
new file mode 100644
index 00000000..d4910ff9
--- /dev/null
+++ b/vue-options-api-demos/editor/plugins/placeholder/main.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/plugins/placeholder/placeholder.js b/vue-options-api-demos/editor/plugins/placeholder/placeholder.js
new file mode 100644
index 00000000..e36b6bd6
--- /dev/null
+++ b/vue-options-api-demos/editor/plugins/placeholder/placeholder.js
@@ -0,0 +1,38 @@
+import { ProseMirror } from '@progress/kendo-vue-editor';
+const { Plugin, PluginKey, Decoration, DecorationSet } = ProseMirror;
+export function placeholder(emptyMessage) {
+ return new Plugin({
+ key: new PluginKey('placeholder'),
+ props: {
+ decorations: (state) => {
+ const { doc } = state;
+ const empty =
+ doc.textContent === '' &&
+ doc.childCount <= 1 &&
+ doc.content.size <= 2;
+
+ if (!empty) {
+ return DecorationSet.empty;
+ }
+
+ const decorations = [];
+ const decAttrs = {
+ class: 'placeholder',
+ 'data-placeholder': emptyMessage,
+ };
+ doc.descendants((node, pos) => {
+ decorations.push(Decoration.node(pos, pos + node.nodeSize, decAttrs));
+ });
+ return DecorationSet.create(doc, decorations);
+ },
+ },
+ });
+}
+export const styles = `p.placeholder:first-child:before {
+ content: attr(data-placeholder);
+ float: left;
+ color: rgb(0, 0, 0, 0.5);
+ cursor: text;
+ height: 0;
+ font-style: italic;
+ }`;
diff --git a/vue-options-api-demos/editor/plugins/readonly/content-basic.js b/vue-options-api-demos/editor/plugins/readonly/content-basic.js
new file mode 100644
index 00000000..e02950c2
--- /dev/null
+++ b/vue-options-api-demos/editor/plugins/readonly/content-basic.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/plugins/readonly/main.js b/vue-options-api-demos/editor/plugins/readonly/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/plugins/readonly/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/plugins/readonly/main.vue b/vue-options-api-demos/editor/plugins/readonly/main.vue
new file mode 100644
index 00000000..327109d9
--- /dev/null
+++ b/vue-options-api-demos/editor/plugins/readonly/main.vue
@@ -0,0 +1,70 @@
+
+
+
+ Set Read-Only to {{ editable }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/rendering-mode/main.js b/vue-options-api-demos/editor/rendering-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/rendering-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/rendering-mode/main.vue b/vue-options-api-demos/editor/rendering-mode/main.vue
new file mode 100644
index 00000000..b9657f74
--- /dev/null
+++ b/vue-options-api-demos/editor/rendering-mode/main.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/rendering-mode/styles.css b/vue-options-api-demos/editor/rendering-mode/styles.css
new file mode 100644
index 00000000..3406202a
--- /dev/null
+++ b/vue-options-api-demos/editor/rendering-mode/styles.css
@@ -0,0 +1,44 @@
+.k-editor-content p {
+ margin: 0.6em 0 0.6em 0;
+}
+.k-editor-content td p,
+.k-editor-content th p,
+.k-editor-content li p {
+ margin: 0;
+}
+
+.k-editor-content table {
+ margin: 0;
+ border-collapse: collapse;
+ table-layout: fixed;
+ width: 100%;
+ overflow: hidden;
+}
+
+.k-editor-content td,
+.k-editor-content th {
+ min-width: 1em;
+ border: 1px solid #ddd;
+ padding: 3px 5px;
+ vertical-align: top;
+ box-sizing: border-box;
+ position: relative;
+}
+
+.k-editor-content th {
+ font-weight: bold;
+ text-align: left;
+}
+
+/* Give selected cells a blue overlay */
+.k-editor-content .selectedCell:after {
+ z-index: 2;
+ position: absolute;
+ content: "";
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ background: rgba(200, 200, 255, 0.4);
+ pointer-events: none;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/editor/resizing/editor/content.js b/vue-options-api-demos/editor/resizing/editor/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/resizing/editor/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/resizing/editor/main.js b/vue-options-api-demos/editor/resizing/editor/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/resizing/editor/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/resizing/editor/main.vue b/vue-options-api-demos/editor/resizing/editor/main.vue
new file mode 100644
index 00000000..332d798d
--- /dev/null
+++ b/vue-options-api-demos/editor/resizing/editor/main.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/resizing/images/content-overview.js b/vue-options-api-demos/editor/resizing/images/content-overview.js
new file mode 100644
index 00000000..136cfe6c
--- /dev/null
+++ b/vue-options-api-demos/editor/resizing/images/content-overview.js
@@ -0,0 +1,3 @@
+const content = `
Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. In this version, the Editor provides the core HTML editing engine, which includes basic text formatting, hyperlinks, lists, and image handling. The widget outputs identical HTML across all major browsers, follows accessibility standards and provides multiple tools for content manipulation.
Features include:
Text formatting & alignment
Bulleted and numbered lists
Hyperlink and image dialogs
Identical HTML output across modern browsers
Highly customizable tools
The Editor has a table option as well, allowing to add and edit tabular data.
Product Id
Product Name
Price
1
Chai
18
2
Chang
19
3
Aniseed Syrup
10
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/resizing/images/main.js b/vue-options-api-demos/editor/resizing/images/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/resizing/images/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/resizing/images/main.vue b/vue-options-api-demos/editor/resizing/images/main.vue
new file mode 100644
index 00000000..82d9d0e0
--- /dev/null
+++ b/vue-options-api-demos/editor/resizing/images/main.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/rtl/content.js b/vue-options-api-demos/editor/rtl/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/rtl/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/rtl/main.js b/vue-options-api-demos/editor/rtl/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/rtl/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/rtl/main.vue b/vue-options-api-demos/editor/rtl/main.vue
new file mode 100644
index 00000000..c8d8edc5
--- /dev/null
+++ b/vue-options-api-demos/editor/rtl/main.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/schema-custom/content.js b/vue-options-api-demos/editor/schema-custom/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/schema-custom/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/schema-custom/main.js b/vue-options-api-demos/editor/schema-custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/schema-custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/schema-custom/main.vue b/vue-options-api-demos/editor/schema-custom/main.vue
new file mode 100644
index 00000000..ad6315a0
--- /dev/null
+++ b/vue-options-api-demos/editor/schema-custom/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/schema-custom/schema-utils.js b/vue-options-api-demos/editor/schema-custom/schema-utils.js
new file mode 100644
index 00000000..230cb59c
--- /dev/null
+++ b/vue-options-api-demos/editor/schema-custom/schema-utils.js
@@ -0,0 +1,67 @@
+const getAttributes = (dom) => {
+ const result = {};
+ let attributes = dom.attributes,
+ attr;
+
+ for (let i = 0; i < attributes.length; i++) {
+ attr = attributes[i];
+ result[attr.name] = attr.value;
+ }
+
+ return result;
+};
+
+const commonAttributes = () => {
+ return {
+ style: {
+ default: null,
+ },
+ class: {
+ default: null,
+ },
+ id: {
+ default: null,
+ },
+ };
+};
+
+const hasAttrs = (attrs, exclude) => {
+ for (let attr in attrs) {
+ if (attr && attrs[attr] !== null && attr !== exclude) {
+ return true;
+ }
+ }
+
+ return false;
+};
+
+const getAttrs = (attrs, exclude) => {
+ const result = {};
+
+ for (let attr in attrs) {
+ if (attr && attrs[attr] !== null && attr !== exclude) {
+ result[attr] = attrs[attr];
+ }
+ }
+
+ return result;
+};
+
+const tagMark = (tag) => {
+ // https://prosemirror.net/docs/ref/#model.MarkSpec
+ return {
+ [tag]: {
+ name: tag,
+ inclusive: true,
+ parseDOM: [
+ {
+ tag: tag,
+ },
+ ],
+ toDOM: () => [tag, hole],
+ },
+ };
+};
+
+const hole = 0;
+export { getAttributes, commonAttributes, hasAttrs, getAttrs, tagMark, hole };
diff --git a/vue-options-api-demos/editor/schema-custom/schema.js b/vue-options-api-demos/editor/schema-custom/schema.js
new file mode 100644
index 00000000..aec23c1d
--- /dev/null
+++ b/vue-options-api-demos/editor/schema-custom/schema.js
@@ -0,0 +1,311 @@
+import { ProseMirror } from '@progress/kendo-vue-editor';
+const { Schema, tableNodes } = ProseMirror;
+import {
+ getAttributes,
+ commonAttributes,
+ hasAttrs,
+ getAttrs,
+ tagMark,
+ hole,
+} from './schema-utils'; // The MarkSpec interface - https://prosemirror.net/docs/ref/#model.MarkSpec
+
+const marks = {
+ link: {
+ attrs: {
+ ...commonAttributes(),
+ href: {
+ default: null,
+ },
+ target: {
+ default: null,
+ },
+ title: {
+ default: null,
+ },
+ },
+ inclusive: false,
+ parseDOM: [
+ {
+ tag: 'a',
+ getAttrs: getAttributes,
+ },
+ ],
+
+ toDOM(node) {
+ return ['a', getAttrs(node.attrs, false), hole];
+ },
+ },
+ ...tagMark('strong'),
+ ...tagMark('b'),
+ ...tagMark('em'),
+ ...tagMark('i'),
+ ...tagMark('u'),
+ ...tagMark('del'),
+ ...tagMark('sub'),
+ ...tagMark('sup'),
+ ...tagMark('code'),
+ style: {
+ attrs: { ...commonAttributes() },
+ parseDOM: [
+ {
+ tag: 'span',
+ getAttrs: getAttributes,
+ },
+ ],
+ toDOM: (node) =>
+ hasAttrs(node.attrs, false)
+ ? ['span', getAttrs(node.attrs, false), hole]
+ : ['span', hole],
+ },
+}; // The NodeSpec interface - http://prosemirror.net/docs/ref/#model.NodeSpec
+
+const nodes = {
+ // The top level document node.
+ doc: {
+ content: 'block+',
+ },
+ paragraph: {
+ content: 'inline*',
+ group: 'block',
+ attrs: { ...commonAttributes() },
+ parseDOM: [
+ {
+ tag: 'p',
+ getAttrs: getAttributes,
+ },
+ ],
+ toDOM: (node) =>
+ hasAttrs(node.attrs, false)
+ ? ['p', getAttrs(node.attrs, false), hole]
+ : ['p', hole],
+ },
+ div: {
+ content: 'block*',
+ group: 'block',
+ attrs: { ...commonAttributes() },
+ parseDOM: [
+ {
+ tag: 'div',
+ getAttrs: getAttributes,
+ },
+ ],
+ toDOM: (node) =>
+ hasAttrs(node.attrs, false)
+ ? ['div', getAttrs(node.attrs, false), hole]
+ : ['div', hole],
+ },
+ blockquote: {
+ content: 'block+',
+ group: 'block',
+ defining: true,
+ parseDOM: [
+ {
+ tag: 'blockquote',
+ },
+ ],
+ toDOM: () => ['blockquote', hole],
+ },
+ horizontal_rule: {
+ group: 'block',
+ parseDOM: [
+ {
+ tag: 'hr',
+ },
+ ],
+
+ toDOM() {
+ return ['hr'];
+ },
+ },
+ heading: {
+ attrs: {
+ ...commonAttributes(),
+ level: {
+ default: 1,
+ },
+ },
+ content: 'inline*',
+ group: 'block',
+ defining: true,
+ parseDOM: [
+ {
+ tag: 'h1',
+ getAttrs: (node) => ({ ...getAttributes(node), level: 1 }),
+ },
+ {
+ tag: 'h2',
+ getAttrs: (node) => ({ ...getAttributes(node), level: 2 }),
+ },
+ {
+ tag: 'h3',
+ getAttrs: (node) => ({ ...getAttributes(node), level: 3 }),
+ },
+ {
+ tag: 'h4',
+ getAttrs: (node) => ({ ...getAttributes(node), level: 4 }),
+ },
+ {
+ tag: 'h5',
+ getAttrs: (node) => ({ ...getAttributes(node), level: 5 }),
+ },
+ {
+ tag: 'h6',
+ getAttrs: (node) => ({ ...getAttributes(node), level: 6 }),
+ },
+ ],
+ toDOM: (node) =>
+ hasAttrs(node.attrs, 'level')
+ ? ['h' + node.attrs.level, getAttrs(node.attrs, 'level'), hole]
+ : ['h' + node.attrs.level, hole],
+ },
+ code_block: {
+ content: 'text*',
+ marks: '',
+ group: 'block',
+ code: true,
+ defining: true,
+ parseDOM: [
+ {
+ tag: 'pre',
+ preserveWhitespace: 'full',
+ },
+ ],
+
+ toDOM() {
+ return ['pre', ['code', hole]];
+ },
+ },
+ // The text node.
+ text: {
+ inline: true,
+ group: 'inline',
+ },
+ image: {
+ inline: true,
+ attrs: {
+ src: {
+ default: null,
+ },
+ alt: {
+ default: null,
+ },
+ title: {
+ default: null,
+ },
+ width: {
+ default: null,
+ },
+ height: {
+ default: null,
+ },
+ ...commonAttributes(),
+ },
+ group: 'inline',
+ draggable: true,
+ parseDOM: [
+ {
+ tag: 'img',
+ getAttrs: getAttributes,
+ },
+ ],
+ toDOM: (node) =>
+ hasAttrs(node.attrs, false)
+ ? ['img', getAttrs(node.attrs, false)]
+ : ['img'],
+ },
+ hard_break: {
+ inline: true,
+ attrs: { ...commonAttributes() },
+ group: 'inline',
+ selectable: false,
+ parseDOM: [
+ {
+ tag: 'br',
+ getAttrs: getAttributes,
+ },
+ ],
+ toDOM: (node) =>
+ hasAttrs(node.attrs, false)
+ ? ['br', getAttrs(node.attrs, false)]
+ : ['br'],
+ },
+ ordered_list: {
+ content: 'list_item+',
+ group: 'block',
+ attrs: {
+ ...commonAttributes(),
+ type: {
+ default: null,
+ },
+ order: {
+ default: 1,
+ },
+ },
+ parseDOM: [
+ {
+ tag: 'ol',
+ getAttrs: (dom) => {
+ return {
+ ...getAttributes(dom),
+ order: dom.hasAttribute('start')
+ ? parseInt(dom.getAttribute('start') || '1', 10)
+ : 1,
+ };
+ },
+ },
+ ],
+ toDOM: (node) => {
+ return node.attrs.order === 1
+ ? hasAttrs(node.attrs, 'order')
+ ? ['ol', getAttrs(node.attrs, 'order'), hole]
+ : ['ol', 0]
+ : [
+ 'ol',
+ { ...getAttrs(node.attrs, 'order'), start: node.attrs.order },
+ hole,
+ ];
+ },
+ },
+ bullet_list: {
+ content: 'list_item+',
+ group: 'block',
+ attrs: { ...commonAttributes() },
+ parseDOM: [
+ {
+ tag: 'ul',
+ getAttrs: getAttributes,
+ },
+ ],
+ toDOM: (node) =>
+ hasAttrs(node.attrs, false)
+ ? ['ul', getAttrs(node.attrs, false), hole]
+ : ['ul', 0],
+ },
+ list_item: {
+ content: 'block*',
+ attrs: { ...commonAttributes() },
+ parseDOM: [
+ {
+ tag: 'li',
+ getAttrs: getAttributes,
+ },
+ ],
+ toDOM: (node) =>
+ hasAttrs(node.attrs, false)
+ ? ['li', getAttrs(node.attrs, false), hole]
+ : ['li', 0],
+ defining: true,
+ },
+ // Imported from the `prosemirror-tables` package
+ // https://github.com/ProseMirror/prosemirror-tables/
+ ...tableNodes({
+ tableGroup: 'block',
+ cellContent: 'block+',
+ cellAttributes: {},
+ }),
+};
+const mySchema = new Schema({
+ nodes,
+ marks,
+});
+export default mySchema;
diff --git a/vue-options-api-demos/editor/schema-edit/main.js b/vue-options-api-demos/editor/schema-edit/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/schema-edit/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/schema-edit/main.vue b/vue-options-api-demos/editor/schema-edit/main.vue
new file mode 100644
index 00000000..2ffd1318
--- /dev/null
+++ b/vue-options-api-demos/editor/schema-edit/main.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/schema-edit/new-mark.js b/vue-options-api-demos/editor/schema-edit/new-mark.js
new file mode 100644
index 00000000..1d3a98aa
--- /dev/null
+++ b/vue-options-api-demos/editor/schema-edit/new-mark.js
@@ -0,0 +1,16 @@
+const tagMark = (tag) => ({
+ // MarkSpec interface
+ // https://prosemirror.net/docs/ref/#model.MarkSpec
+ [tag]: {
+ name: tag,
+ inclusive: true,
+ parseDOM: [
+ {
+ tag
+ }
+ ],
+ toDOM: () => [tag, 0],
+ }
+});
+
+export { tagMark };
diff --git a/vue-options-api-demos/editor/schema-edit/new-node.js b/vue-options-api-demos/editor/schema-edit/new-node.js
new file mode 100644
index 00000000..1cb9c221
--- /dev/null
+++ b/vue-options-api-demos/editor/schema-edit/new-node.js
@@ -0,0 +1,33 @@
+const iframe = {
+ // NodeSpec interface
+ // http://prosemirror.net/docs/ref/#model.NodeSpec
+ attrs: {
+ src: {
+ default: null,
+ },
+ style: {
+ default: null,
+ },
+ },
+ group: 'block',
+ selectable: false,
+ parseDOM: [
+ {
+ tag: 'iframe',
+ getAttrs: (dom) => ({
+ src: dom.getAttribute('src'),
+ style: dom.getAttribute('style'),
+ }),
+ },
+ ],
+ toDOM: (node) => {
+ const attrs = {
+ src: node.attrs.src,
+ style: node.attrs.style,
+ frameborder: '0',
+ allowfullscreen: 'true',
+ };
+ return ['iframe', attrs];
+ },
+};
+export { iframe };
diff --git a/vue-options-api-demos/editor/selection/cell/content.js b/vue-options-api-demos/editor/selection/cell/content.js
new file mode 100644
index 00000000..e5cfac57
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/cell/content.js
@@ -0,0 +1,48 @@
+export const content = `
+
+
+
+ Product Id
+
+
+ Product Name
+
+
+ Price
+
+
+
+
+ 1
+
+
+ Chai
+
+
+ 18
+
+
+
+
+ 2
+
+
+ Chang
+
+
+ 19
+
+
+
+
+ 3
+
+
+ Aniseed Syrup
+
+
+ 10
+
+
+
+
`;
\ No newline at end of file
diff --git a/vue-options-api-demos/editor/selection/cell/main.js b/vue-options-api-demos/editor/selection/cell/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/cell/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/selection/cell/main.vue b/vue-options-api-demos/editor/selection/cell/main.vue
new file mode 100644
index 00000000..e982e458
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/cell/main.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/selection/get-html/content.js b/vue-options-api-demos/editor/selection/get-html/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/get-html/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/selection/get-html/main.js b/vue-options-api-demos/editor/selection/get-html/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/get-html/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/selection/get-html/main.vue b/vue-options-api-demos/editor/selection/get-html/main.vue
new file mode 100644
index 00000000..34923731
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/get-html/main.vue
@@ -0,0 +1,75 @@
+
+
+
+
+ Selected HTML
+
+
+
+ Selected Text
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/selection/node/content.js b/vue-options-api-demos/editor/selection/node/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/node/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/selection/node/main.js b/vue-options-api-demos/editor/selection/node/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/node/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/selection/node/main.vue b/vue-options-api-demos/editor/selection/node/main.vue
new file mode 100644
index 00000000..008518ca
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/node/main.vue
@@ -0,0 +1,63 @@
+
+
+ Select second Node
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/selection/select-all/content.js b/vue-options-api-demos/editor/selection/select-all/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/select-all/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/selection/select-all/main.js b/vue-options-api-demos/editor/selection/select-all/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/select-all/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/selection/select-all/main.vue b/vue-options-api-demos/editor/selection/select-all/main.vue
new file mode 100644
index 00000000..0cbfa5a0
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/select-all/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/selection/text/content.js b/vue-options-api-demos/editor/selection/text/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/text/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/selection/text/main.js b/vue-options-api-demos/editor/selection/text/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/text/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/selection/text/main.vue b/vue-options-api-demos/editor/selection/text/main.vue
new file mode 100644
index 00000000..92e72410
--- /dev/null
+++ b/vue-options-api-demos/editor/selection/text/main.vue
@@ -0,0 +1,123 @@
+
+
+
+
+ {{
+ `Selection: ${JSON.stringify({
+ start,
+ end,
+ })}`
+ }}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/shared/content-basic.js b/vue-options-api-demos/editor/shared/content-basic.js
new file mode 100644
index 00000000..e02950c2
--- /dev/null
+++ b/vue-options-api-demos/editor/shared/content-basic.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/shared/content-overview.js b/vue-options-api-demos/editor/shared/content-overview.js
new file mode 100644
index 00000000..136cfe6c
--- /dev/null
+++ b/vue-options-api-demos/editor/shared/content-overview.js
@@ -0,0 +1,3 @@
+const content = `
Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. In this version, the Editor provides the core HTML editing engine, which includes basic text formatting, hyperlinks, lists, and image handling. The widget outputs identical HTML across all major browsers, follows accessibility standards and provides multiple tools for content manipulation.
Features include:
Text formatting & alignment
Bulleted and numbered lists
Hyperlink and image dialogs
Identical HTML output across modern browsers
Highly customizable tools
The Editor has a table option as well, allowing to add and edit tabular data.
Product Id
Product Name
Price
1
Chai
18
2
Chang
19
3
Aniseed Syrup
10
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/shared/content.js b/vue-options-api-demos/editor/shared/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/shared/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/styling-iframe/content.js b/vue-options-api-demos/editor/styling-iframe/content.js
new file mode 100644
index 00000000..009c377b
--- /dev/null
+++ b/vue-options-api-demos/editor/styling-iframe/content.js
@@ -0,0 +1,3 @@
+const content = `The Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. The Editor provides the core HTML editing engine, which includes text formatting, hyperlinks, and lists. The component outputs identical HTML across all major browsers, follows accessibility standards, and provides API for content manipulation.
Features include:
`;
+
+export default content;
diff --git a/vue-options-api-demos/editor/styling-iframe/main.js b/vue-options-api-demos/editor/styling-iframe/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/editor/styling-iframe/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/editor/styling-iframe/main.vue b/vue-options-api-demos/editor/styling-iframe/main.vue
new file mode 100644
index 00000000..e65f0136
--- /dev/null
+++ b/vue-options-api-demos/editor/styling-iframe/main.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/editor/tsconfig.json b/vue-options-api-demos/editor/tsconfig.json
new file mode 100644
index 00000000..da823a2d
--- /dev/null
+++ b/vue-options-api-demos/editor/tsconfig.json
@@ -0,0 +1,30 @@
+{
+ "compilerOptions": {
+ "types": [],
+ "baseUrl": ".",
+ "sourceMap": false,
+ "noImplicitAny": false,
+ "module": "commonjs",
+ "target": "ES5",
+ "jsx": "react",
+ "lib": [
+ "es2015",
+ "es2017",
+ "dom"
+ ],
+ "declaration": true,
+ "moduleResolution": "node",
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "strictNullChecks": true,
+ "paths": {
+ "@progress/kendo-vue-editor": [
+ "../../src/main.ts",
+ ]
+ }
+ },
+ "include": [
+ "**/*.ts",
+ "**/*.tsx",
+ ]
+}
diff --git a/vue-options-api-demos/excel/basic/main.js b/vue-options-api-demos/excel/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/basic/main.vue b/vue-options-api-demos/excel/basic/main.vue
new file mode 100644
index 00000000..7fba7622
--- /dev/null
+++ b/vue-options-api-demos/excel/basic/main.vue
@@ -0,0 +1,74 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/basic/products.json b/vue-options-api-demos/excel/basic/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/basic/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/cells/data/main.js b/vue-options-api-demos/excel/cells/data/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/data/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/cells/data/main.vue b/vue-options-api-demos/excel/cells/data/main.vue
new file mode 100644
index 00000000..16957c1a
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/data/main.vue
@@ -0,0 +1,35 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/cells/data/products.json b/vue-options-api-demos/excel/cells/data/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/data/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/cells/footer/main.js b/vue-options-api-demos/excel/cells/footer/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/footer/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/cells/footer/main.vue b/vue-options-api-demos/excel/cells/footer/main.vue
new file mode 100644
index 00000000..2875cd39
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/footer/main.vue
@@ -0,0 +1,48 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/cells/footer/products.json b/vue-options-api-demos/excel/cells/footer/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/footer/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/cells/group-footer/main.js b/vue-options-api-demos/excel/cells/group-footer/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/group-footer/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/cells/group-footer/main.vue b/vue-options-api-demos/excel/cells/group-footer/main.vue
new file mode 100644
index 00000000..14016ccf
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/group-footer/main.vue
@@ -0,0 +1,61 @@
+
+
+ Export Excel
+
+
+
+
diff --git a/vue-options-api-demos/excel/cells/group-footer/products.json b/vue-options-api-demos/excel/cells/group-footer/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/group-footer/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/cells/group-header/main.js b/vue-options-api-demos/excel/cells/group-header/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/group-header/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/cells/group-header/main.vue b/vue-options-api-demos/excel/cells/group-header/main.vue
new file mode 100644
index 00000000..ccef896a
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/group-header/main.vue
@@ -0,0 +1,48 @@
+
+
+ Export Excel
+
+
+
+
diff --git a/vue-options-api-demos/excel/cells/group-header/products.json b/vue-options-api-demos/excel/cells/group-header/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/group-header/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/cells/header-padding/main.js b/vue-options-api-demos/excel/cells/header-padding/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/header-padding/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/cells/header-padding/main.vue b/vue-options-api-demos/excel/cells/header-padding/main.vue
new file mode 100644
index 00000000..62588021
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/header-padding/main.vue
@@ -0,0 +1,44 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/cells/header-padding/products.json b/vue-options-api-demos/excel/cells/header-padding/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/header-padding/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/cells/header/main.js b/vue-options-api-demos/excel/cells/header/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/header/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/cells/header/main.vue b/vue-options-api-demos/excel/cells/header/main.vue
new file mode 100644
index 00000000..e73da04f
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/header/main.vue
@@ -0,0 +1,38 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/cells/header/products.json b/vue-options-api-demos/excel/cells/header/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/header/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/cells/padding/main.js b/vue-options-api-demos/excel/cells/padding/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/padding/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/cells/padding/main.vue b/vue-options-api-demos/excel/cells/padding/main.vue
new file mode 100644
index 00000000..385e89c6
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/padding/main.vue
@@ -0,0 +1,44 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/cells/padding/products.json b/vue-options-api-demos/excel/cells/padding/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/cells/padding/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/columns/footer/main.js b/vue-options-api-demos/excel/columns/footer/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/footer/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/columns/footer/main.vue b/vue-options-api-demos/excel/columns/footer/main.vue
new file mode 100644
index 00000000..b949c268
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/footer/main.vue
@@ -0,0 +1,36 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/columns/footer/products.json b/vue-options-api-demos/excel/columns/footer/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/footer/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/columns/group-footer/main.js b/vue-options-api-demos/excel/columns/group-footer/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/group-footer/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/columns/group-footer/main.vue b/vue-options-api-demos/excel/columns/group-footer/main.vue
new file mode 100644
index 00000000..2aa3b1f4
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/group-footer/main.vue
@@ -0,0 +1,48 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/columns/group-footer/products.json b/vue-options-api-demos/excel/columns/group-footer/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/group-footer/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/columns/group-header/main.js b/vue-options-api-demos/excel/columns/group-header/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/group-header/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/columns/group-header/main.vue b/vue-options-api-demos/excel/columns/group-header/main.vue
new file mode 100644
index 00000000..b4b6041e
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/group-header/main.vue
@@ -0,0 +1,46 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/columns/group-header/products.json b/vue-options-api-demos/excel/columns/group-header/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/group-header/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/columns/hidden/main.js b/vue-options-api-demos/excel/columns/hidden/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/hidden/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/columns/hidden/main.vue b/vue-options-api-demos/excel/columns/hidden/main.vue
new file mode 100644
index 00000000..a85b71f7
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/hidden/main.vue
@@ -0,0 +1,44 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/columns/hidden/products.json b/vue-options-api-demos/excel/columns/hidden/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/hidden/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/columns/locked/main.js b/vue-options-api-demos/excel/columns/locked/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/locked/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/columns/locked/main.vue b/vue-options-api-demos/excel/columns/locked/main.vue
new file mode 100644
index 00000000..b5858a9b
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/locked/main.vue
@@ -0,0 +1,43 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/columns/locked/products.json b/vue-options-api-demos/excel/columns/locked/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/locked/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/columns/multi/main.js b/vue-options-api-demos/excel/columns/multi/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/multi/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/columns/multi/main.vue b/vue-options-api-demos/excel/columns/multi/main.vue
new file mode 100644
index 00000000..fd04dd16
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/multi/main.vue
@@ -0,0 +1,41 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/columns/multi/products.json b/vue-options-api-demos/excel/columns/multi/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/columns/multi/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/filtering/main.js b/vue-options-api-demos/excel/filtering/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/filtering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/filtering/main.vue b/vue-options-api-demos/excel/filtering/main.vue
new file mode 100644
index 00000000..a2d592d5
--- /dev/null
+++ b/vue-options-api-demos/excel/filtering/main.vue
@@ -0,0 +1,31 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/filtering/products.json b/vue-options-api-demos/excel/filtering/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/filtering/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/rtl/main.js b/vue-options-api-demos/excel/rtl/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/rtl/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/rtl/main.vue b/vue-options-api-demos/excel/rtl/main.vue
new file mode 100644
index 00000000..571585e3
--- /dev/null
+++ b/vue-options-api-demos/excel/rtl/main.vue
@@ -0,0 +1,30 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/rtl/products.json b/vue-options-api-demos/excel/rtl/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/rtl/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/shared/products.json b/vue-options-api-demos/excel/shared/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/shared/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/excel/workbook/main.js b/vue-options-api-demos/excel/workbook/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/excel/workbook/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/excel/workbook/main.vue b/vue-options-api-demos/excel/workbook/main.vue
new file mode 100644
index 00000000..c78a48b3
--- /dev/null
+++ b/vue-options-api-demos/excel/workbook/main.vue
@@ -0,0 +1,56 @@
+
+
+ Export Excel
+
+
+
diff --git a/vue-options-api-demos/excel/workbook/products.json b/vue-options-api-demos/excel/workbook/products.json
new file mode 100644
index 00000000..ecf3ff9e
--- /dev/null
+++ b/vue-options-api-demos/excel/workbook/products.json
@@ -0,0 +1,1311 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+]
diff --git a/vue-options-api-demos/form/advanced/changing/FormContent.vue b/vue-options-api-demos/form/advanced/changing/FormContent.vue
new file mode 100644
index 00000000..e7fd7cac
--- /dev/null
+++ b/vue-options-api-demos/form/advanced/changing/FormContent.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+ Clear price
+
+
+
+ Submit
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/advanced/changing/FormNumericTextBox.vue b/vue-options-api-demos/form/advanced/changing/FormNumericTextBox.vue
new file mode 100644
index 00000000..fda4a4ec
--- /dev/null
+++ b/vue-options-api-demos/form/advanced/changing/FormNumericTextBox.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/advanced/changing/main.js b/vue-options-api-demos/form/advanced/changing/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/advanced/changing/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/advanced/changing/main.vue b/vue-options-api-demos/form/advanced/changing/main.vue
new file mode 100644
index 00000000..77145f7c
--- /dev/null
+++ b/vue-options-api-demos/form/advanced/changing/main.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/advanced/dynamic-reset/FormContent.vue b/vue-options-api-demos/form/advanced/dynamic-reset/FormContent.vue
new file mode 100644
index 00000000..5731f2b9
--- /dev/null
+++ b/vue-options-api-demos/form/advanced/dynamic-reset/FormContent.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/advanced/dynamic-reset/FormInput.vue b/vue-options-api-demos/form/advanced/dynamic-reset/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/advanced/dynamic-reset/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/advanced/dynamic-reset/main.js b/vue-options-api-demos/form/advanced/dynamic-reset/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/advanced/dynamic-reset/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/advanced/dynamic-reset/main.vue b/vue-options-api-demos/form/advanced/dynamic-reset/main.vue
new file mode 100644
index 00000000..abd15d0e
--- /dev/null
+++ b/vue-options-api-demos/form/advanced/dynamic-reset/main.vue
@@ -0,0 +1,50 @@
+
+
+
+ Load new user
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/advanced/reading/FormContent.vue b/vue-options-api-demos/form/advanced/reading/FormContent.vue
new file mode 100644
index 00000000..0d2802e8
--- /dev/null
+++ b/vue-options-api-demos/form/advanced/reading/FormContent.vue
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Total ticket price:
+
+ {{kendoForm.valueGetter("userCount") *
+ kendoForm.valueGetter("ticketCount")}}
+
+
+
+ Submit
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/advanced/reading/FormNumericTextBox.vue b/vue-options-api-demos/form/advanced/reading/FormNumericTextBox.vue
new file mode 100644
index 00000000..fda4a4ec
--- /dev/null
+++ b/vue-options-api-demos/form/advanced/reading/FormNumericTextBox.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/advanced/reading/main.js b/vue-options-api-demos/form/advanced/reading/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/advanced/reading/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/advanced/reading/main.vue b/vue-options-api-demos/form/advanced/reading/main.vue
new file mode 100644
index 00000000..1e094fe2
--- /dev/null
+++ b/vue-options-api-demos/form/advanced/reading/main.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/basic/FormContent.vue b/vue-options-api-demos/form/basic/FormContent.vue
new file mode 100644
index 00000000..b97a7dc5
--- /dev/null
+++ b/vue-options-api-demos/form/basic/FormContent.vue
@@ -0,0 +1,97 @@
+
+
+
+ Please fill in the fields:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+ Clear
+
+
+
+
diff --git a/vue-options-api-demos/form/basic/FormInput.vue b/vue-options-api-demos/form/basic/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/basic/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/basic/main.js b/vue-options-api-demos/form/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/basic/main.vue b/vue-options-api-demos/form/basic/main.vue
new file mode 100644
index 00000000..cb5e3869
--- /dev/null
+++ b/vue-options-api-demos/form/basic/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/custom-components/advanced/FormContent.vue b/vue-options-api-demos/form/custom-components/advanced/FormContent.vue
new file mode 100644
index 00000000..dbd8d833
--- /dev/null
+++ b/vue-options-api-demos/form/custom-components/advanced/FormContent.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/custom-components/advanced/FormInput.vue b/vue-options-api-demos/form/custom-components/advanced/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/custom-components/advanced/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/custom-components/advanced/main.js b/vue-options-api-demos/form/custom-components/advanced/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/custom-components/advanced/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/custom-components/advanced/main.vue b/vue-options-api-demos/form/custom-components/advanced/main.vue
new file mode 100644
index 00000000..ee5d7f4f
--- /dev/null
+++ b/vue-options-api-demos/form/custom-components/advanced/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/custom-components/advanced/validators.js b/vue-options-api-demos/form/custom-components/advanced/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/custom-components/advanced/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/custom-components/basic/FormContent.vue b/vue-options-api-demos/form/custom-components/basic/FormContent.vue
new file mode 100644
index 00000000..fca87e69
--- /dev/null
+++ b/vue-options-api-demos/form/custom-components/basic/FormContent.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/custom-components/basic/FormInput.vue b/vue-options-api-demos/form/custom-components/basic/FormInput.vue
new file mode 100644
index 00000000..76733af2
--- /dev/null
+++ b/vue-options-api-demos/form/custom-components/basic/FormInput.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/custom-components/basic/main.js b/vue-options-api-demos/form/custom-components/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/custom-components/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/custom-components/basic/main.vue b/vue-options-api-demos/form/custom-components/basic/main.vue
new file mode 100644
index 00000000..ee5d7f4f
--- /dev/null
+++ b/vue-options-api-demos/form/custom-components/basic/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/fieldarrayvalidation/CommandCell.vue b/vue-options-api-demos/form/fieldarrayvalidation/CommandCell.vue
new file mode 100644
index 00000000..1154fc04
--- /dev/null
+++ b/vue-options-api-demos/form/fieldarrayvalidation/CommandCell.vue
@@ -0,0 +1,35 @@
+
+
+
+ Remove
+
+
+
+
diff --git a/vue-options-api-demos/form/fieldarrayvalidation/FormContent.vue b/vue-options-api-demos/form/fieldarrayvalidation/FormContent.vue
new file mode 100644
index 00000000..c124329c
--- /dev/null
+++ b/vue-options-api-demos/form/fieldarrayvalidation/FormContent.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+ Clear
+
+
+
+
+
diff --git a/vue-options-api-demos/form/fieldarrayvalidation/FormGrid.vue b/vue-options-api-demos/form/fieldarrayvalidation/FormGrid.vue
new file mode 100644
index 00000000..64a0588b
--- /dev/null
+++ b/vue-options-api-demos/form/fieldarrayvalidation/FormGrid.vue
@@ -0,0 +1,67 @@
+
+
+ {{validationMessage}}
+
+
+
+
+
+
+ Add new
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/fieldarrayvalidation/main.js b/vue-options-api-demos/form/fieldarrayvalidation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/fieldarrayvalidation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/fieldarrayvalidation/main.vue b/vue-options-api-demos/form/fieldarrayvalidation/main.vue
new file mode 100644
index 00000000..cb5e3869
--- /dev/null
+++ b/vue-options-api-demos/form/fieldarrayvalidation/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/fieldvalidation/FormContent.vue b/vue-options-api-demos/form/fieldvalidation/FormContent.vue
new file mode 100644
index 00000000..f0eb0151
--- /dev/null
+++ b/vue-options-api-demos/form/fieldvalidation/FormContent.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+ Clear
+
+
+
+
+
diff --git a/vue-options-api-demos/form/fieldvalidation/FormInput.vue b/vue-options-api-demos/form/fieldvalidation/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/fieldvalidation/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/fieldvalidation/main.js b/vue-options-api-demos/form/fieldvalidation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/fieldvalidation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/fieldvalidation/main.vue b/vue-options-api-demos/form/fieldvalidation/main.vue
new file mode 100644
index 00000000..cb5e3869
--- /dev/null
+++ b/vue-options-api-demos/form/fieldvalidation/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/formvalidation/FormContent.vue b/vue-options-api-demos/form/formvalidation/FormContent.vue
new file mode 100644
index 00000000..cc606c71
--- /dev/null
+++ b/vue-options-api-demos/form/formvalidation/FormContent.vue
@@ -0,0 +1,94 @@
+
+
+
+
+ Please fill in the fields:
+
+
+ {{kendoForm.errors.VALIDATION_SUMMARY}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+ Clear
+
+
+
+
+
diff --git a/vue-options-api-demos/form/formvalidation/FormInput.vue b/vue-options-api-demos/form/formvalidation/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/formvalidation/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/formvalidation/main.js b/vue-options-api-demos/form/formvalidation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/formvalidation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/formvalidation/main.vue b/vue-options-api-demos/form/formvalidation/main.vue
new file mode 100644
index 00000000..1535ff29
--- /dev/null
+++ b/vue-options-api-demos/form/formvalidation/main.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/checkboxes/FormCheckbox.vue b/vue-options-api-demos/form/guideline/checkboxes/FormCheckbox.vue
new file mode 100644
index 00000000..9c415a82
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/checkboxes/FormCheckbox.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/checkboxes/FormContent.vue b/vue-options-api-demos/form/guideline/checkboxes/FormContent.vue
new file mode 100644
index 00000000..34a2ba85
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/checkboxes/FormContent.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/checkboxes/FormRadioGroup.vue b/vue-options-api-demos/form/guideline/checkboxes/FormRadioGroup.vue
new file mode 100644
index 00000000..0dc1d7ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/checkboxes/FormRadioGroup.vue
@@ -0,0 +1,107 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/checkboxes/data.js b/vue-options-api-demos/form/guideline/checkboxes/data.js
new file mode 100644
index 00000000..1b3905df
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/checkboxes/data.js
@@ -0,0 +1,212 @@
+export const genders = [
+ { label: 'Male', value: 'male' },
+ { label: 'Female', value: 'female' },
+ { label: 'Other', value: 'other' }
+];
+
+export const countries = [
+ 'Albania',
+ 'Andorra',
+ 'Armenia',
+ 'Austria',
+ 'Azerbaijan',
+ 'Belarus',
+ 'Belgium',
+ 'Bosnia & Herzegovina',
+ 'Bulgaria',
+ 'Croatia',
+ 'Cyprus',
+ 'Czech Republic',
+ 'Denmark',
+ 'Estonia',
+ 'Finland',
+ 'France',
+ 'Georgia',
+ 'Germany',
+ 'Greece',
+ 'Hungary',
+ 'Iceland',
+ 'Ireland',
+ 'Italy',
+ 'Kosovo',
+ 'Latvia',
+ 'Liechtenstein',
+ 'Lithuania',
+ 'Luxembourg',
+ 'Macedonia',
+ 'Malta',
+ 'Moldova',
+ 'Monaco',
+ 'Montenegro',
+ 'Netherlands',
+ 'Norway',
+ 'Poland',
+ 'Portugal',
+ 'Romania',
+ 'Russia',
+ 'San Marino',
+ 'Serbia',
+ 'Slovakia',
+ 'Slovenia',
+ 'Spain',
+ 'Sweden',
+ 'Switzerland',
+ 'Turkey',
+ 'Ukraine',
+ 'United Kingdom',
+ 'Vatican City'
+];
+
+export const sizes = [
+ 'X-Small',
+ 'Small',
+ 'Medium',
+ 'Large',
+ 'X-Large',
+ '2X-Large'
+];
+
+export const sports = [
+ 'Baseball',
+ 'Basketball',
+ 'Cricket',
+ 'Field Hockey',
+ 'Football',
+ 'Table Tennis',
+ 'Tennis',
+ 'Volleyball'
+];
+
+export const equipment = [
+ {
+ text: 'Furniture',
+ id: 1,
+ items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ },
+ {
+ text: 'Decor',
+ id: 5,
+ items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
+
+export const employees = [
+ {
+ id: 1,
+ name: 'Daryl Sweeney',
+ reportsTo: null,
+ phone: '(555) 924-9726',
+ extension: 8253,
+ hireDate: new Date('2012-02-07T20:00:00.000Z'),
+ fullTime: true,
+ position: 'CEO',
+ timeInPosition: 2
+ },
+ {
+ id: 2,
+ name: 'Guy Wooten',
+ reportsTo: 1,
+ phone: '(438) 738-4935',
+ extension: 1155,
+ hireDate: new Date('2010-03-03T20:00:00.000Z'),
+ fullTime: true,
+ position: 'Chief Technical Officer',
+ timeInPosition: 1
+ },
+ {
+ id: 3,
+ name: 'Priscilla Frank',
+ reportsTo: 1,
+ phone: '(278) 927-2684',
+ extension: 4183,
+ hireDate: new Date('2014-11-30T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Chief Product Officer',
+ timeInPosition: 2
+ },
+ {
+ id: 4,
+ name: 'Ursula Holmes',
+ reportsTo: 3,
+ phone: '(302) 760-2034',
+ extension: 2226,
+ hireDate: new Date('2011-06-06T00:00:00.000Z'),
+ fullTime: true,
+ position: 'EVP, Product Strategy',
+ timeInPosition: 4
+ },
+ {
+ id: 5,
+ name: 'Anika Vega',
+ reportsTo: 1,
+ phone: '(910) 714-1802',
+ extension: 6353,
+ hireDate: new Date('2010-02-25T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Chief Process Officer',
+ timeInPosition: 5
+ },
+ {
+ id: 6,
+ name: 'Moses Duncan',
+ reportsTo: 64,
+ phone: '(421) 611-4814',
+ extension: 669,
+ hireDate: new Date('2010-05-24T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Software Developer',
+ timeInPosition: 6
+ },
+ {
+ id: 7,
+ name: 'Nevada Hart',
+ reportsTo: 1,
+ phone: '(254) 220-1576',
+ extension: 6649,
+ hireDate: new Date('2015-08-17T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Chief Financial Officer',
+ timeInPosition: 6
+ },
+ {
+ id: 8,
+ name: 'Hunter Fry',
+ reportsTo: 1,
+ phone: '(766) 358-9858',
+ extension: 3741,
+ hireDate: new Date('2011-02-12T00:00:00.000Z'),
+ fullTime: false,
+ position: 'General Counsel',
+ timeInPosition: 3
+ },
+ {
+ id: 9,
+ name: 'Kuame Carrillo',
+ reportsTo: 8,
+ phone: '(192) 383-1305',
+ extension: 9228,
+ hireDate: new Date('2011-02-22T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Associate General Councel',
+ timeInPosition: 0
+ },
+ {
+ id: 10,
+ name: 'Vernon Ballard',
+ reportsTo: 5,
+ phone: '(702) 185-8890',
+ extension: 9242,
+ hireDate: new Date('2015-06-26T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Director Facilities',
+ timeInPosition: 2
+ }
+];
diff --git a/vue-options-api-demos/form/guideline/checkboxes/main.js b/vue-options-api-demos/form/guideline/checkboxes/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/checkboxes/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/checkboxes/main.vue b/vue-options-api-demos/form/guideline/checkboxes/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/checkboxes/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/checkboxes/validators.js b/vue-options-api-demos/form/guideline/checkboxes/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/checkboxes/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/datepickers/FormContent.vue b/vue-options-api-demos/form/guideline/datepickers/FormContent.vue
new file mode 100644
index 00000000..e120ee1b
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/datepickers/FormContent.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/datepickers/FormDateInput.vue b/vue-options-api-demos/form/guideline/datepickers/FormDateInput.vue
new file mode 100644
index 00000000..29cf0d01
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/datepickers/FormDateInput.vue
@@ -0,0 +1,79 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/datepickers/FormDatePicker.vue b/vue-options-api-demos/form/guideline/datepickers/FormDatePicker.vue
new file mode 100644
index 00000000..af21ec48
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/datepickers/FormDatePicker.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/datepickers/FormDateTimePicker.vue b/vue-options-api-demos/form/guideline/datepickers/FormDateTimePicker.vue
new file mode 100644
index 00000000..03e66bc8
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/datepickers/FormDateTimePicker.vue
@@ -0,0 +1,79 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/datepickers/FormTimePicker.vue b/vue-options-api-demos/form/guideline/datepickers/FormTimePicker.vue
new file mode 100644
index 00000000..b76cc70c
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/datepickers/FormTimePicker.vue
@@ -0,0 +1,79 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/datepickers/main.js b/vue-options-api-demos/form/guideline/datepickers/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/datepickers/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/datepickers/main.vue b/vue-options-api-demos/form/guideline/datepickers/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/datepickers/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/datepickers/validators.js b/vue-options-api-demos/form/guideline/datepickers/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/datepickers/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/disabled/FormContent.vue b/vue-options-api-demos/form/guideline/disabled/FormContent.vue
new file mode 100644
index 00000000..b8a61db6
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/disabled/FormContent.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/disabled/FormInput.vue b/vue-options-api-demos/form/guideline/disabled/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/disabled/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/disabled/FormMaskedTextBox.vue b/vue-options-api-demos/form/guideline/disabled/FormMaskedTextBox.vue
new file mode 100644
index 00000000..395d904f
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/disabled/FormMaskedTextBox.vue
@@ -0,0 +1,88 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/disabled/main.js b/vue-options-api-demos/form/guideline/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/disabled/main.vue b/vue-options-api-demos/form/guideline/disabled/main.vue
new file mode 100644
index 00000000..6ac6d672
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/disabled/main.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/dropdowns/FormAutoComplete.vue b/vue-options-api-demos/form/guideline/dropdowns/FormAutoComplete.vue
new file mode 100644
index 00000000..9a1344e8
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/dropdowns/FormAutoComplete.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/dropdowns/FormComboBox.vue b/vue-options-api-demos/form/guideline/dropdowns/FormComboBox.vue
new file mode 100644
index 00000000..748a36ba
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/dropdowns/FormComboBox.vue
@@ -0,0 +1,87 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/dropdowns/FormContent.vue b/vue-options-api-demos/form/guideline/dropdowns/FormContent.vue
new file mode 100644
index 00000000..51c3a2d4
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/dropdowns/FormContent.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+ Clear
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/dropdowns/FormDropDownList.vue b/vue-options-api-demos/form/guideline/dropdowns/FormDropDownList.vue
new file mode 100644
index 00000000..ad567de3
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/dropdowns/FormDropDownList.vue
@@ -0,0 +1,82 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/dropdowns/FormMultiSelect.vue b/vue-options-api-demos/form/guideline/dropdowns/FormMultiSelect.vue
new file mode 100644
index 00000000..800a724b
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/dropdowns/FormMultiSelect.vue
@@ -0,0 +1,82 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/dropdowns/data.js b/vue-options-api-demos/form/guideline/dropdowns/data.js
new file mode 100644
index 00000000..1b3905df
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/dropdowns/data.js
@@ -0,0 +1,212 @@
+export const genders = [
+ { label: 'Male', value: 'male' },
+ { label: 'Female', value: 'female' },
+ { label: 'Other', value: 'other' }
+];
+
+export const countries = [
+ 'Albania',
+ 'Andorra',
+ 'Armenia',
+ 'Austria',
+ 'Azerbaijan',
+ 'Belarus',
+ 'Belgium',
+ 'Bosnia & Herzegovina',
+ 'Bulgaria',
+ 'Croatia',
+ 'Cyprus',
+ 'Czech Republic',
+ 'Denmark',
+ 'Estonia',
+ 'Finland',
+ 'France',
+ 'Georgia',
+ 'Germany',
+ 'Greece',
+ 'Hungary',
+ 'Iceland',
+ 'Ireland',
+ 'Italy',
+ 'Kosovo',
+ 'Latvia',
+ 'Liechtenstein',
+ 'Lithuania',
+ 'Luxembourg',
+ 'Macedonia',
+ 'Malta',
+ 'Moldova',
+ 'Monaco',
+ 'Montenegro',
+ 'Netherlands',
+ 'Norway',
+ 'Poland',
+ 'Portugal',
+ 'Romania',
+ 'Russia',
+ 'San Marino',
+ 'Serbia',
+ 'Slovakia',
+ 'Slovenia',
+ 'Spain',
+ 'Sweden',
+ 'Switzerland',
+ 'Turkey',
+ 'Ukraine',
+ 'United Kingdom',
+ 'Vatican City'
+];
+
+export const sizes = [
+ 'X-Small',
+ 'Small',
+ 'Medium',
+ 'Large',
+ 'X-Large',
+ '2X-Large'
+];
+
+export const sports = [
+ 'Baseball',
+ 'Basketball',
+ 'Cricket',
+ 'Field Hockey',
+ 'Football',
+ 'Table Tennis',
+ 'Tennis',
+ 'Volleyball'
+];
+
+export const equipment = [
+ {
+ text: 'Furniture',
+ id: 1,
+ items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ },
+ {
+ text: 'Decor',
+ id: 5,
+ items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
+
+export const employees = [
+ {
+ id: 1,
+ name: 'Daryl Sweeney',
+ reportsTo: null,
+ phone: '(555) 924-9726',
+ extension: 8253,
+ hireDate: new Date('2012-02-07T20:00:00.000Z'),
+ fullTime: true,
+ position: 'CEO',
+ timeInPosition: 2
+ },
+ {
+ id: 2,
+ name: 'Guy Wooten',
+ reportsTo: 1,
+ phone: '(438) 738-4935',
+ extension: 1155,
+ hireDate: new Date('2010-03-03T20:00:00.000Z'),
+ fullTime: true,
+ position: 'Chief Technical Officer',
+ timeInPosition: 1
+ },
+ {
+ id: 3,
+ name: 'Priscilla Frank',
+ reportsTo: 1,
+ phone: '(278) 927-2684',
+ extension: 4183,
+ hireDate: new Date('2014-11-30T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Chief Product Officer',
+ timeInPosition: 2
+ },
+ {
+ id: 4,
+ name: 'Ursula Holmes',
+ reportsTo: 3,
+ phone: '(302) 760-2034',
+ extension: 2226,
+ hireDate: new Date('2011-06-06T00:00:00.000Z'),
+ fullTime: true,
+ position: 'EVP, Product Strategy',
+ timeInPosition: 4
+ },
+ {
+ id: 5,
+ name: 'Anika Vega',
+ reportsTo: 1,
+ phone: '(910) 714-1802',
+ extension: 6353,
+ hireDate: new Date('2010-02-25T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Chief Process Officer',
+ timeInPosition: 5
+ },
+ {
+ id: 6,
+ name: 'Moses Duncan',
+ reportsTo: 64,
+ phone: '(421) 611-4814',
+ extension: 669,
+ hireDate: new Date('2010-05-24T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Software Developer',
+ timeInPosition: 6
+ },
+ {
+ id: 7,
+ name: 'Nevada Hart',
+ reportsTo: 1,
+ phone: '(254) 220-1576',
+ extension: 6649,
+ hireDate: new Date('2015-08-17T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Chief Financial Officer',
+ timeInPosition: 6
+ },
+ {
+ id: 8,
+ name: 'Hunter Fry',
+ reportsTo: 1,
+ phone: '(766) 358-9858',
+ extension: 3741,
+ hireDate: new Date('2011-02-12T00:00:00.000Z'),
+ fullTime: false,
+ position: 'General Counsel',
+ timeInPosition: 3
+ },
+ {
+ id: 9,
+ name: 'Kuame Carrillo',
+ reportsTo: 8,
+ phone: '(192) 383-1305',
+ extension: 9228,
+ hireDate: new Date('2011-02-22T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Associate General Councel',
+ timeInPosition: 0
+ },
+ {
+ id: 10,
+ name: 'Vernon Ballard',
+ reportsTo: 5,
+ phone: '(702) 185-8890',
+ extension: 9242,
+ hireDate: new Date('2015-06-26T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Director Facilities',
+ timeInPosition: 2
+ }
+];
diff --git a/vue-options-api-demos/form/guideline/dropdowns/main.js b/vue-options-api-demos/form/guideline/dropdowns/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/dropdowns/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/dropdowns/main.vue b/vue-options-api-demos/form/guideline/dropdowns/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/dropdowns/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/dropdowns/validators.js b/vue-options-api-demos/form/guideline/dropdowns/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/dropdowns/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/errormessages/FormContent.vue b/vue-options-api-demos/form/guideline/errormessages/FormContent.vue
new file mode 100644
index 00000000..79a5abb0
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/errormessages/FormContent.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/errormessages/FormInput.vue b/vue-options-api-demos/form/guideline/errormessages/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/errormessages/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/errormessages/main.js b/vue-options-api-demos/form/guideline/errormessages/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/errormessages/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/errormessages/main.vue b/vue-options-api-demos/form/guideline/errormessages/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/errormessages/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/errormessages/validators.js b/vue-options-api-demos/form/guideline/errormessages/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/errormessages/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/floating/FormContent.vue b/vue-options-api-demos/form/guideline/floating/FormContent.vue
new file mode 100644
index 00000000..f3f30445
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/floating/FormContent.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/floating/FormFloatingNumericTextBox.vue b/vue-options-api-demos/form/guideline/floating/FormFloatingNumericTextBox.vue
new file mode 100644
index 00000000..5df99979
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/floating/FormFloatingNumericTextBox.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/floating/main.js b/vue-options-api-demos/form/guideline/floating/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/floating/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/floating/main.vue b/vue-options-api-demos/form/guideline/floating/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/floating/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/floating/validators.js b/vue-options-api-demos/form/guideline/floating/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/floating/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/formbuttons/FormCheckbox.vue b/vue-options-api-demos/form/guideline/formbuttons/FormCheckbox.vue
new file mode 100644
index 00000000..9c415a82
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formbuttons/FormCheckbox.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formbuttons/FormContent.vue b/vue-options-api-demos/form/guideline/formbuttons/FormContent.vue
new file mode 100644
index 00000000..93a36281
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formbuttons/FormContent.vue
@@ -0,0 +1,112 @@
+
+
+
+
+ Your Account
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formbuttons/FormInput.vue b/vue-options-api-demos/form/guideline/formbuttons/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formbuttons/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formbuttons/main.js b/vue-options-api-demos/form/guideline/formbuttons/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formbuttons/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/formbuttons/main.vue b/vue-options-api-demos/form/guideline/formbuttons/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formbuttons/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formbuttons/validators.js b/vue-options-api-demos/form/guideline/formbuttons/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formbuttons/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormCheckbox.vue b/vue-options-api-demos/form/guideline/formcomponents/FormCheckbox.vue
new file mode 100644
index 00000000..9c415a82
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formcomponents/FormCheckbox.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormContent.vue b/vue-options-api-demos/form/guideline/formcomponents/FormContent.vue
new file mode 100644
index 00000000..47215fa1
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formcomponents/FormContent.vue
@@ -0,0 +1,211 @@
+
+
+
+
+ BOOK YOUR DREAM VACATION TODAY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormDatePicker.vue b/vue-options-api-demos/form/guideline/formcomponents/FormDatePicker.vue
new file mode 100644
index 00000000..af21ec48
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formcomponents/FormDatePicker.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormInput.vue b/vue-options-api-demos/form/guideline/formcomponents/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formcomponents/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormMaskedTextBox.vue b/vue-options-api-demos/form/guideline/formcomponents/FormMaskedTextBox.vue
new file mode 100644
index 00000000..395d904f
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formcomponents/FormMaskedTextBox.vue
@@ -0,0 +1,88 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormNumericTextBox.vue b/vue-options-api-demos/form/guideline/formcomponents/FormNumericTextBox.vue
new file mode 100644
index 00000000..fda4a4ec
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formcomponents/FormNumericTextBox.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formcomponents/FormTextArea.vue b/vue-options-api-demos/form/guideline/formcomponents/FormTextArea.vue
new file mode 100644
index 00000000..3c308b6d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formcomponents/FormTextArea.vue
@@ -0,0 +1,81 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formcomponents/main.js b/vue-options-api-demos/form/guideline/formcomponents/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formcomponents/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/formcomponents/main.vue b/vue-options-api-demos/form/guideline/formcomponents/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formcomponents/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formcomponents/validators.js b/vue-options-api-demos/form/guideline/formcomponents/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formcomponents/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/formvalidation/FormCheckbox.vue b/vue-options-api-demos/form/guideline/formvalidation/FormCheckbox.vue
new file mode 100644
index 00000000..9c415a82
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formvalidation/FormCheckbox.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formvalidation/FormContent.vue b/vue-options-api-demos/form/guideline/formvalidation/FormContent.vue
new file mode 100644
index 00000000..48034735
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formvalidation/FormContent.vue
@@ -0,0 +1,127 @@
+
+
+
+
+ PLEASE FILL IN THE FOLLOWING INFORMATION:
+
+
+ {{kendoForm.errors[genericErrorField]}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formvalidation/FormInput.vue b/vue-options-api-demos/form/guideline/formvalidation/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formvalidation/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formvalidation/main.js b/vue-options-api-demos/form/guideline/formvalidation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formvalidation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/formvalidation/main.vue b/vue-options-api-demos/form/guideline/formvalidation/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formvalidation/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/formvalidation/validators.js b/vue-options-api-demos/form/guideline/formvalidation/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/formvalidation/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/groups/FormCheckbox.vue b/vue-options-api-demos/form/guideline/groups/FormCheckbox.vue
new file mode 100644
index 00000000..9c415a82
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/groups/FormCheckbox.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/groups/FormContent.vue b/vue-options-api-demos/form/guideline/groups/FormContent.vue
new file mode 100644
index 00000000..ebe58745
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/groups/FormContent.vue
@@ -0,0 +1,111 @@
+
+
+
+
+ USER DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/groups/FormInput.vue b/vue-options-api-demos/form/guideline/groups/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/groups/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/groups/main.js b/vue-options-api-demos/form/guideline/groups/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/groups/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/groups/main.vue b/vue-options-api-demos/form/guideline/groups/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/groups/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/groups/validators.js b/vue-options-api-demos/form/guideline/groups/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/groups/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/hints/FormContent.vue b/vue-options-api-demos/form/guideline/hints/FormContent.vue
new file mode 100644
index 00000000..231ab390
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/hints/FormContent.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/hints/FormDatePicker.vue b/vue-options-api-demos/form/guideline/hints/FormDatePicker.vue
new file mode 100644
index 00000000..af21ec48
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/hints/FormDatePicker.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/hints/FormInput.vue b/vue-options-api-demos/form/guideline/hints/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/hints/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/hints/main.js b/vue-options-api-demos/form/guideline/hints/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/hints/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/hints/main.vue b/vue-options-api-demos/form/guideline/hints/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/hints/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/hints/validators.js b/vue-options-api-demos/form/guideline/hints/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/hints/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/horizontal/FormContent.vue b/vue-options-api-demos/form/guideline/horizontal/FormContent.vue
new file mode 100644
index 00000000..53ebb218
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/horizontal/FormContent.vue
@@ -0,0 +1,114 @@
+
+
+
+
+ Horizontal Form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/horizontal/FormInput.vue b/vue-options-api-demos/form/guideline/horizontal/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/horizontal/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/horizontal/FormMaskedTextBox.vue b/vue-options-api-demos/form/guideline/horizontal/FormMaskedTextBox.vue
new file mode 100644
index 00000000..395d904f
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/horizontal/FormMaskedTextBox.vue
@@ -0,0 +1,88 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/horizontal/main.js b/vue-options-api-demos/form/guideline/horizontal/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/horizontal/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/horizontal/main.vue b/vue-options-api-demos/form/guideline/horizontal/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/horizontal/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/horizontal/validators.js b/vue-options-api-demos/form/guideline/horizontal/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/horizontal/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/inputs/FormContent.vue b/vue-options-api-demos/form/guideline/inputs/FormContent.vue
new file mode 100644
index 00000000..d4f43921
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/inputs/FormContent.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/inputs/FormInput.vue b/vue-options-api-demos/form/guideline/inputs/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/inputs/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/inputs/FormMaskedTextBox.vue b/vue-options-api-demos/form/guideline/inputs/FormMaskedTextBox.vue
new file mode 100644
index 00000000..395d904f
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/inputs/FormMaskedTextBox.vue
@@ -0,0 +1,88 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/inputs/FormNumericTextBox.vue b/vue-options-api-demos/form/guideline/inputs/FormNumericTextBox.vue
new file mode 100644
index 00000000..fda4a4ec
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/inputs/FormNumericTextBox.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/inputs/FormSlider.vue b/vue-options-api-demos/form/guideline/inputs/FormSlider.vue
new file mode 100644
index 00000000..f3d5c9a3
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/inputs/FormSlider.vue
@@ -0,0 +1,89 @@
+
+
+
+ {{label}}
+
+
+
+ {{item}}
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/inputs/FormTextArea.vue b/vue-options-api-demos/form/guideline/inputs/FormTextArea.vue
new file mode 100644
index 00000000..3c308b6d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/inputs/FormTextArea.vue
@@ -0,0 +1,81 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/inputs/main.js b/vue-options-api-demos/form/guideline/inputs/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/inputs/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/inputs/main.vue b/vue-options-api-demos/form/guideline/inputs/main.vue
new file mode 100644
index 00000000..ee5d7f4f
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/inputs/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/inputs/validators.js b/vue-options-api-demos/form/guideline/inputs/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/inputs/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/optional/FormContent.vue b/vue-options-api-demos/form/guideline/optional/FormContent.vue
new file mode 100644
index 00000000..eefd043c
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/optional/FormContent.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/optional/FormFloatingNumericTextBox.vue b/vue-options-api-demos/form/guideline/optional/FormFloatingNumericTextBox.vue
new file mode 100644
index 00000000..5df99979
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/optional/FormFloatingNumericTextBox.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/optional/FormMaskedTextBox.vue b/vue-options-api-demos/form/guideline/optional/FormMaskedTextBox.vue
new file mode 100644
index 00000000..395d904f
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/optional/FormMaskedTextBox.vue
@@ -0,0 +1,88 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/optional/main.js b/vue-options-api-demos/form/guideline/optional/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/optional/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/optional/main.vue b/vue-options-api-demos/form/guideline/optional/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/optional/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/optional/validators.js b/vue-options-api-demos/form/guideline/optional/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/optional/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/placeholder/FormContent.vue b/vue-options-api-demos/form/guideline/placeholder/FormContent.vue
new file mode 100644
index 00000000..4bc143aa
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/placeholder/FormContent.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/placeholder/FormInput.vue b/vue-options-api-demos/form/guideline/placeholder/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/placeholder/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/placeholder/main.js b/vue-options-api-demos/form/guideline/placeholder/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/placeholder/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/placeholder/main.vue b/vue-options-api-demos/form/guideline/placeholder/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/placeholder/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/placeholder/validators.js b/vue-options-api-demos/form/guideline/placeholder/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/placeholder/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/form/guideline/uploads/FormContent.vue b/vue-options-api-demos/form/guideline/uploads/FormContent.vue
new file mode 100644
index 00000000..1964ea7c
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/uploads/FormContent.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/uploads/FormUpload.vue b/vue-options-api-demos/form/guideline/uploads/FormUpload.vue
new file mode 100644
index 00000000..947b1481
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/uploads/FormUpload.vue
@@ -0,0 +1,91 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/guideline/uploads/main.js b/vue-options-api-demos/form/guideline/uploads/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/uploads/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/guideline/uploads/main.vue b/vue-options-api-demos/form/guideline/uploads/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/form/guideline/uploads/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/labels/FloatingLabelFormInput.vue b/vue-options-api-demos/form/labels/FloatingLabelFormInput.vue
new file mode 100644
index 00000000..d34eea70
--- /dev/null
+++ b/vue-options-api-demos/form/labels/FloatingLabelFormInput.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/form/labels/FormContent.vue b/vue-options-api-demos/form/labels/FormContent.vue
new file mode 100644
index 00000000..9ce93ada
--- /dev/null
+++ b/vue-options-api-demos/form/labels/FormContent.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+
diff --git a/vue-options-api-demos/form/labels/LabelFormInput.vue b/vue-options-api-demos/form/labels/LabelFormInput.vue
new file mode 100644
index 00000000..83984063
--- /dev/null
+++ b/vue-options-api-demos/form/labels/LabelFormInput.vue
@@ -0,0 +1,85 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/labels/main.js b/vue-options-api-demos/form/labels/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/labels/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/labels/main.vue b/vue-options-api-demos/form/labels/main.vue
new file mode 100644
index 00000000..cb5e3869
--- /dev/null
+++ b/vue-options-api-demos/form/labels/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/layout/horizontal/FloatingLabelFormInput.vue b/vue-options-api-demos/form/layout/horizontal/FloatingLabelFormInput.vue
new file mode 100644
index 00000000..3f6e4f14
--- /dev/null
+++ b/vue-options-api-demos/form/layout/horizontal/FloatingLabelFormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/layout/horizontal/FormContent.vue b/vue-options-api-demos/form/layout/horizontal/FormContent.vue
new file mode 100644
index 00000000..2dec2369
--- /dev/null
+++ b/vue-options-api-demos/form/layout/horizontal/FormContent.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+
diff --git a/vue-options-api-demos/form/layout/horizontal/LabelFormInput.vue b/vue-options-api-demos/form/layout/horizontal/LabelFormInput.vue
new file mode 100644
index 00000000..d5146c80
--- /dev/null
+++ b/vue-options-api-demos/form/layout/horizontal/LabelFormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/layout/horizontal/main.js b/vue-options-api-demos/form/layout/horizontal/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/layout/horizontal/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/layout/horizontal/main.vue b/vue-options-api-demos/form/layout/horizontal/main.vue
new file mode 100644
index 00000000..cb5e3869
--- /dev/null
+++ b/vue-options-api-demos/form/layout/horizontal/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/layout/vertical/FloatingLabelFormInput.vue b/vue-options-api-demos/form/layout/vertical/FloatingLabelFormInput.vue
new file mode 100644
index 00000000..34e4b9ac
--- /dev/null
+++ b/vue-options-api-demos/form/layout/vertical/FloatingLabelFormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/layout/vertical/FormContent.vue b/vue-options-api-demos/form/layout/vertical/FormContent.vue
new file mode 100644
index 00000000..9ce93ada
--- /dev/null
+++ b/vue-options-api-demos/form/layout/vertical/FormContent.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+
diff --git a/vue-options-api-demos/form/layout/vertical/LabelFormInput.vue b/vue-options-api-demos/form/layout/vertical/LabelFormInput.vue
new file mode 100644
index 00000000..9fecbbfa
--- /dev/null
+++ b/vue-options-api-demos/form/layout/vertical/LabelFormInput.vue
@@ -0,0 +1,83 @@
+
+
+
+ {{label}}
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
diff --git a/vue-options-api-demos/form/layout/vertical/main.js b/vue-options-api-demos/form/layout/vertical/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/form/layout/vertical/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/form/layout/vertical/main.vue b/vue-options-api-demos/form/layout/vertical/main.vue
new file mode 100644
index 00000000..cb5e3869
--- /dev/null
+++ b/vue-options-api-demos/form/layout/vertical/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/CommandCell.vue b/vue-options-api-demos/form/shared/CommandCell.vue
new file mode 100644
index 00000000..1154fc04
--- /dev/null
+++ b/vue-options-api-demos/form/shared/CommandCell.vue
@@ -0,0 +1,35 @@
+
+
+
+ Remove
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormAutoComplete.vue b/vue-options-api-demos/form/shared/FormAutoComplete.vue
new file mode 100644
index 00000000..9a1344e8
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormAutoComplete.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormCheckbox.vue b/vue-options-api-demos/form/shared/FormCheckbox.vue
new file mode 100644
index 00000000..9c415a82
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormCheckbox.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormComboBox.vue b/vue-options-api-demos/form/shared/FormComboBox.vue
new file mode 100644
index 00000000..748a36ba
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormComboBox.vue
@@ -0,0 +1,87 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormDateInput.vue b/vue-options-api-demos/form/shared/FormDateInput.vue
new file mode 100644
index 00000000..29cf0d01
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormDateInput.vue
@@ -0,0 +1,79 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormDatePicker.vue b/vue-options-api-demos/form/shared/FormDatePicker.vue
new file mode 100644
index 00000000..af21ec48
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormDatePicker.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormDateTimePicker.vue b/vue-options-api-demos/form/shared/FormDateTimePicker.vue
new file mode 100644
index 00000000..03e66bc8
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormDateTimePicker.vue
@@ -0,0 +1,79 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormDropDownList.vue b/vue-options-api-demos/form/shared/FormDropDownList.vue
new file mode 100644
index 00000000..ad567de3
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormDropDownList.vue
@@ -0,0 +1,82 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormFloatingNumericTextBox.vue b/vue-options-api-demos/form/shared/FormFloatingNumericTextBox.vue
new file mode 100644
index 00000000..5df99979
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormFloatingNumericTextBox.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormGrid.vue b/vue-options-api-demos/form/shared/FormGrid.vue
new file mode 100644
index 00000000..64a0588b
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormGrid.vue
@@ -0,0 +1,67 @@
+
+
+ {{validationMessage}}
+
+
+
+
+
+
+ Add new
+
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormInput.vue b/vue-options-api-demos/form/shared/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormMaskedTextBox.vue b/vue-options-api-demos/form/shared/FormMaskedTextBox.vue
new file mode 100644
index 00000000..395d904f
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormMaskedTextBox.vue
@@ -0,0 +1,88 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormMultiSelect.vue b/vue-options-api-demos/form/shared/FormMultiSelect.vue
new file mode 100644
index 00000000..800a724b
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormMultiSelect.vue
@@ -0,0 +1,82 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormNumericTextBox.vue b/vue-options-api-demos/form/shared/FormNumericTextBox.vue
new file mode 100644
index 00000000..fda4a4ec
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormNumericTextBox.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormRadioGroup.vue b/vue-options-api-demos/form/shared/FormRadioGroup.vue
new file mode 100644
index 00000000..0dc1d7ae
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormRadioGroup.vue
@@ -0,0 +1,107 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormSlider.vue b/vue-options-api-demos/form/shared/FormSlider.vue
new file mode 100644
index 00000000..f3d5c9a3
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormSlider.vue
@@ -0,0 +1,89 @@
+
+
+
+ {{label}}
+
+
+
+ {{item}}
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormTextArea.vue b/vue-options-api-demos/form/shared/FormTextArea.vue
new file mode 100644
index 00000000..3c308b6d
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormTextArea.vue
@@ -0,0 +1,81 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormTimePicker.vue b/vue-options-api-demos/form/shared/FormTimePicker.vue
new file mode 100644
index 00000000..b76cc70c
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormTimePicker.vue
@@ -0,0 +1,79 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/FormUpload.vue b/vue-options-api-demos/form/shared/FormUpload.vue
new file mode 100644
index 00000000..947b1481
--- /dev/null
+++ b/vue-options-api-demos/form/shared/FormUpload.vue
@@ -0,0 +1,91 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/form/shared/data.js b/vue-options-api-demos/form/shared/data.js
new file mode 100644
index 00000000..1b3905df
--- /dev/null
+++ b/vue-options-api-demos/form/shared/data.js
@@ -0,0 +1,212 @@
+export const genders = [
+ { label: 'Male', value: 'male' },
+ { label: 'Female', value: 'female' },
+ { label: 'Other', value: 'other' }
+];
+
+export const countries = [
+ 'Albania',
+ 'Andorra',
+ 'Armenia',
+ 'Austria',
+ 'Azerbaijan',
+ 'Belarus',
+ 'Belgium',
+ 'Bosnia & Herzegovina',
+ 'Bulgaria',
+ 'Croatia',
+ 'Cyprus',
+ 'Czech Republic',
+ 'Denmark',
+ 'Estonia',
+ 'Finland',
+ 'France',
+ 'Georgia',
+ 'Germany',
+ 'Greece',
+ 'Hungary',
+ 'Iceland',
+ 'Ireland',
+ 'Italy',
+ 'Kosovo',
+ 'Latvia',
+ 'Liechtenstein',
+ 'Lithuania',
+ 'Luxembourg',
+ 'Macedonia',
+ 'Malta',
+ 'Moldova',
+ 'Monaco',
+ 'Montenegro',
+ 'Netherlands',
+ 'Norway',
+ 'Poland',
+ 'Portugal',
+ 'Romania',
+ 'Russia',
+ 'San Marino',
+ 'Serbia',
+ 'Slovakia',
+ 'Slovenia',
+ 'Spain',
+ 'Sweden',
+ 'Switzerland',
+ 'Turkey',
+ 'Ukraine',
+ 'United Kingdom',
+ 'Vatican City'
+];
+
+export const sizes = [
+ 'X-Small',
+ 'Small',
+ 'Medium',
+ 'Large',
+ 'X-Large',
+ '2X-Large'
+];
+
+export const sports = [
+ 'Baseball',
+ 'Basketball',
+ 'Cricket',
+ 'Field Hockey',
+ 'Football',
+ 'Table Tennis',
+ 'Tennis',
+ 'Volleyball'
+];
+
+export const equipment = [
+ {
+ text: 'Furniture',
+ id: 1,
+ items: [
+ { text: 'Tables & Chairs', id: 2 },
+ { text: 'Sofas', id: 3 },
+ { text: 'Occasional Furniture', id: 4 }
+ ]
+ },
+ {
+ text: 'Decor',
+ id: 5,
+ items: [
+ { text: 'Bed Linen', id: 6 },
+ { text: 'Curtains & Blinds', id: 7 },
+ { text: 'Carpets', id: 8 }
+ ]
+ }
+];
+
+export const employees = [
+ {
+ id: 1,
+ name: 'Daryl Sweeney',
+ reportsTo: null,
+ phone: '(555) 924-9726',
+ extension: 8253,
+ hireDate: new Date('2012-02-07T20:00:00.000Z'),
+ fullTime: true,
+ position: 'CEO',
+ timeInPosition: 2
+ },
+ {
+ id: 2,
+ name: 'Guy Wooten',
+ reportsTo: 1,
+ phone: '(438) 738-4935',
+ extension: 1155,
+ hireDate: new Date('2010-03-03T20:00:00.000Z'),
+ fullTime: true,
+ position: 'Chief Technical Officer',
+ timeInPosition: 1
+ },
+ {
+ id: 3,
+ name: 'Priscilla Frank',
+ reportsTo: 1,
+ phone: '(278) 927-2684',
+ extension: 4183,
+ hireDate: new Date('2014-11-30T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Chief Product Officer',
+ timeInPosition: 2
+ },
+ {
+ id: 4,
+ name: 'Ursula Holmes',
+ reportsTo: 3,
+ phone: '(302) 760-2034',
+ extension: 2226,
+ hireDate: new Date('2011-06-06T00:00:00.000Z'),
+ fullTime: true,
+ position: 'EVP, Product Strategy',
+ timeInPosition: 4
+ },
+ {
+ id: 5,
+ name: 'Anika Vega',
+ reportsTo: 1,
+ phone: '(910) 714-1802',
+ extension: 6353,
+ hireDate: new Date('2010-02-25T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Chief Process Officer',
+ timeInPosition: 5
+ },
+ {
+ id: 6,
+ name: 'Moses Duncan',
+ reportsTo: 64,
+ phone: '(421) 611-4814',
+ extension: 669,
+ hireDate: new Date('2010-05-24T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Software Developer',
+ timeInPosition: 6
+ },
+ {
+ id: 7,
+ name: 'Nevada Hart',
+ reportsTo: 1,
+ phone: '(254) 220-1576',
+ extension: 6649,
+ hireDate: new Date('2015-08-17T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Chief Financial Officer',
+ timeInPosition: 6
+ },
+ {
+ id: 8,
+ name: 'Hunter Fry',
+ reportsTo: 1,
+ phone: '(766) 358-9858',
+ extension: 3741,
+ hireDate: new Date('2011-02-12T00:00:00.000Z'),
+ fullTime: false,
+ position: 'General Counsel',
+ timeInPosition: 3
+ },
+ {
+ id: 9,
+ name: 'Kuame Carrillo',
+ reportsTo: 8,
+ phone: '(192) 383-1305',
+ extension: 9228,
+ hireDate: new Date('2011-02-22T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Associate General Councel',
+ timeInPosition: 0
+ },
+ {
+ id: 10,
+ name: 'Vernon Ballard',
+ reportsTo: 5,
+ phone: '(702) 185-8890',
+ extension: 9242,
+ hireDate: new Date('2015-06-26T00:00:00.000Z'),
+ fullTime: true,
+ position: 'Director Facilities',
+ timeInPosition: 2
+ }
+];
diff --git a/vue-options-api-demos/form/shared/tree-data-operations.js b/vue-options-api-demos/form/shared/tree-data-operations.js
new file mode 100644
index 00000000..1aa4fa17
--- /dev/null
+++ b/vue-options-api-demos/form/shared/tree-data-operations.js
@@ -0,0 +1,31 @@
+import { filterBy } from "@progress/kendo-vue-data-tools";
+import { mapTree, extendDataItem } from "@progress/kendo-vue-common";
+
+export const processTreeData = (data, state, fields) => {
+ const { selectField, expandField, dataItemKey, subItemsField } = fields;
+ const { expanded, value, filter } = state;
+ const filtering = Boolean(filter && filter.value);
+
+ return mapTree(
+ filtering ? filterBy(data, [filter], subItemsField) : data,
+ subItemsField,
+ item => {
+ const props = {
+ [expandField]: expanded.includes(item[dataItemKey]),
+ [selectField]: value && item[dataItemKey] === value[dataItemKey]
+ };
+ return filtering
+ ? extendDataItem(item, subItemsField, props)
+ : { ...item, ...props };
+ }
+ );
+};
+
+export const expandedState = (item, dataItemKey, expanded) => {
+ const nextExpanded = expanded.slice();
+ const itemKey = item[dataItemKey];
+ const index = expanded.indexOf(itemKey);
+ index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
+
+ return nextExpanded;
+};
diff --git a/vue-options-api-demos/form/shared/validators.js b/vue-options-api-demos/form/shared/validators.js
new file mode 100644
index 00000000..b0779c1d
--- /dev/null
+++ b/vue-options-api-demos/form/shared/validators.js
@@ -0,0 +1,82 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = value =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = value =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = value =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = value =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = value =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = value =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = value =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = value =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = value =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = value =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = value => (value ? '' : 'Color is required.');
+export const requiredValidator = value =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = value =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = value => (value ? '' : 'Address is required.');
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = values => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.'
+ };
+};
diff --git a/vue-options-api-demos/gauges/arc-gauge/color-ranges/main.js b/vue-options-api-demos/gauges/arc-gauge/color-ranges/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/arc-gauge/color-ranges/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/arc-gauge/color-ranges/main.vue b/vue-options-api-demos/gauges/arc-gauge/color-ranges/main.vue
new file mode 100644
index 00000000..de7ff783
--- /dev/null
+++ b/vue-options-api-demos/gauges/arc-gauge/color-ranges/main.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/arc-gauge/overview/main.js b/vue-options-api-demos/gauges/arc-gauge/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/arc-gauge/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/arc-gauge/overview/main.vue b/vue-options-api-demos/gauges/arc-gauge/overview/main.vue
new file mode 100644
index 00000000..a53a9cc6
--- /dev/null
+++ b/vue-options-api-demos/gauges/arc-gauge/overview/main.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+ {{ props.value }}%
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/arc-gauge/scale-options/main.js b/vue-options-api-demos/gauges/arc-gauge/scale-options/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/arc-gauge/scale-options/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/arc-gauge/scale-options/main.vue b/vue-options-api-demos/gauges/arc-gauge/scale-options/main.vue
new file mode 100644
index 00000000..fd0512f4
--- /dev/null
+++ b/vue-options-api-demos/gauges/arc-gauge/scale-options/main.vue
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+ Show Labels
+
+
+
+
+
+ Show Ticks
+
+
+
+
+
+
+ Ticks Color
+
+
+
+
+
+ Labels Color
+
+
+
+
+
+
+
+
+ Range Size
+
+
+
+
+
+ Range Line Cap
+
+
+
+
+
+ Range Placeholder Color
+
+
+
+
+
+
+
+
+ Start angle
+
+
+
+
+
+ End angle
+
+
+
+
+
+
+ Reverse
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/circular-gauge/center-template/main.js b/vue-options-api-demos/gauges/circular-gauge/center-template/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/circular-gauge/center-template/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/circular-gauge/center-template/main.vue b/vue-options-api-demos/gauges/circular-gauge/center-template/main.vue
new file mode 100644
index 00000000..b1ec2ebb
--- /dev/null
+++ b/vue-options-api-demos/gauges/circular-gauge/center-template/main.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+ {{ props.value }}%
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/circular-gauge/color-ranges/main.js b/vue-options-api-demos/gauges/circular-gauge/color-ranges/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/circular-gauge/color-ranges/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/circular-gauge/color-ranges/main.vue b/vue-options-api-demos/gauges/circular-gauge/color-ranges/main.vue
new file mode 100644
index 00000000..5e71af68
--- /dev/null
+++ b/vue-options-api-demos/gauges/circular-gauge/color-ranges/main.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/circular-gauge/overview/main.js b/vue-options-api-demos/gauges/circular-gauge/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/circular-gauge/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/circular-gauge/overview/main.vue b/vue-options-api-demos/gauges/circular-gauge/overview/main.vue
new file mode 100644
index 00000000..b1ec2ebb
--- /dev/null
+++ b/vue-options-api-demos/gauges/circular-gauge/overview/main.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+ {{ props.value }}%
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/circular-gauge/scale-options/main.js b/vue-options-api-demos/gauges/circular-gauge/scale-options/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/circular-gauge/scale-options/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/circular-gauge/scale-options/main.vue b/vue-options-api-demos/gauges/circular-gauge/scale-options/main.vue
new file mode 100644
index 00000000..2942a526
--- /dev/null
+++ b/vue-options-api-demos/gauges/circular-gauge/scale-options/main.vue
@@ -0,0 +1,207 @@
+
+
+
+
+
+
+
+ Show Labels
+
+
+
+
+
+ Show Ticks
+
+
+
+
+
+
+ Ticks Color
+
+
+
+
+
+ Labels Color
+
+
+
+
+
+
+
+
+ Range Size
+
+
+
+
+
+ Range Line Cap
+
+
+
+
+
+ Range Placeholder Color
+
+
+
+
+
+
+
+
+ Start angle
+
+
+
+
+
+ Value ({{ value }})
+
+
+
+
+
+
+ Reverse
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/export-options/to-image/main.js b/vue-options-api-demos/gauges/export-options/to-image/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/export-options/to-image/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/export-options/to-image/main.vue b/vue-options-api-demos/gauges/export-options/to-image/main.vue
new file mode 100644
index 00000000..4715f7a0
--- /dev/null
+++ b/vue-options-api-demos/gauges/export-options/to-image/main.vue
@@ -0,0 +1,96 @@
+
+
+
Export to PNG
+
+ Export Linear Gauge
+ Export Radial Gauge
+ Export Arc Gauge
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ props.value }}%
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/export-options/to-pdf/main.js b/vue-options-api-demos/gauges/export-options/to-pdf/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/export-options/to-pdf/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/export-options/to-pdf/main.vue b/vue-options-api-demos/gauges/export-options/to-pdf/main.vue
new file mode 100644
index 00000000..3bd1b890
--- /dev/null
+++ b/vue-options-api-demos/gauges/export-options/to-pdf/main.vue
@@ -0,0 +1,92 @@
+
+
+
Export to PDF
+
+ Export Linear Gauge
+ Export Radial Gauge
+ Export Arc Gauge
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ props.value }}%
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/export-options/to-svg/main.js b/vue-options-api-demos/gauges/export-options/to-svg/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/export-options/to-svg/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/export-options/to-svg/main.vue b/vue-options-api-demos/gauges/export-options/to-svg/main.vue
new file mode 100644
index 00000000..38edb9db
--- /dev/null
+++ b/vue-options-api-demos/gauges/export-options/to-svg/main.vue
@@ -0,0 +1,92 @@
+
+
+
Export to SVG
+
+ Export Linear Gauge
+ Export Radial Gauge
+ Export Arc Gauge
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ props.value }}%
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/globalization/main.js b/vue-options-api-demos/gauges/globalization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/globalization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/globalization/main.vue b/vue-options-api-demos/gauges/globalization/main.vue
new file mode 100644
index 00000000..ac5e257f
--- /dev/null
+++ b/vue-options-api-demos/gauges/globalization/main.vue
@@ -0,0 +1,98 @@
+
+
+
+ Current locale:
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.js b/vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.vue b/vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.vue
new file mode 100644
index 00000000..af114d82
--- /dev/null
+++ b/vue-options-api-demos/gauges/linear-gauge/multiple-pointers/main.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/linear-gauge/orientation/main.js b/vue-options-api-demos/gauges/linear-gauge/orientation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/linear-gauge/orientation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/linear-gauge/orientation/main.vue b/vue-options-api-demos/gauges/linear-gauge/orientation/main.vue
new file mode 100644
index 00000000..a0381885
--- /dev/null
+++ b/vue-options-api-demos/gauges/linear-gauge/orientation/main.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/linear-gauge/overview/main.js b/vue-options-api-demos/gauges/linear-gauge/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/linear-gauge/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/linear-gauge/overview/main.vue b/vue-options-api-demos/gauges/linear-gauge/overview/main.vue
new file mode 100644
index 00000000..ad689dc1
--- /dev/null
+++ b/vue-options-api-demos/gauges/linear-gauge/overview/main.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/linear-gauge/scale-options/main.js b/vue-options-api-demos/gauges/linear-gauge/scale-options/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/linear-gauge/scale-options/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/linear-gauge/scale-options/main.vue b/vue-options-api-demos/gauges/linear-gauge/scale-options/main.vue
new file mode 100644
index 00000000..8f6f8d20
--- /dev/null
+++ b/vue-options-api-demos/gauges/linear-gauge/scale-options/main.vue
@@ -0,0 +1,207 @@
+
+
+
+
+
+
+
+ Show Labels
+
+
+
+
+
+ Show Ticks
+
+
+
+
+
+
+ Ticks Color
+
+
+
+
+
+ Labels Color
+
+
+
+
+
+
+
+
+ Line Width
+
+
+
+
+
+ Line Color
+
+
+
+
+
+ Range Size
+
+
+
+
+
+ Range Color
+
+
+
+
+
+
+
+
+ Vertical
+
+
+
+
+
+ Reverse
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.js b/vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.vue b/vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.vue
new file mode 100644
index 00000000..ed6c1d57
--- /dev/null
+++ b/vue-options-api-demos/gauges/linear-gauge/scale-ranges/main.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/overview/main.js b/vue-options-api-demos/gauges/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/overview/main.vue b/vue-options-api-demos/gauges/overview/main.vue
new file mode 100644
index 00000000..ee78dc3c
--- /dev/null
+++ b/vue-options-api-demos/gauges/overview/main.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+ {{ props.value }}%
+
+
+
+
+
+
+
+
+ {{ props.value }}%
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.js b/vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.vue b/vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.vue
new file mode 100644
index 00000000..83828659
--- /dev/null
+++ b/vue-options-api-demos/gauges/radial-gauge/multiple-pointers/main.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/radial-gauge/overview/main.js b/vue-options-api-demos/gauges/radial-gauge/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/radial-gauge/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/radial-gauge/overview/main.vue b/vue-options-api-demos/gauges/radial-gauge/overview/main.vue
new file mode 100644
index 00000000..4de54aa6
--- /dev/null
+++ b/vue-options-api-demos/gauges/radial-gauge/overview/main.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/radial-gauge/scale-options/main.js b/vue-options-api-demos/gauges/radial-gauge/scale-options/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/radial-gauge/scale-options/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/radial-gauge/scale-options/main.vue b/vue-options-api-demos/gauges/radial-gauge/scale-options/main.vue
new file mode 100644
index 00000000..f9984c89
--- /dev/null
+++ b/vue-options-api-demos/gauges/radial-gauge/scale-options/main.vue
@@ -0,0 +1,200 @@
+
+
+
+
+
+
+
+ Show Labels
+
+
+
+
+
+ Show Ticks
+
+
+
+
+
+
+ Ticks Color
+
+
+
+
+
+ Labels Color
+
+
+
+
+
+
+
+
+ Range Size
+
+
+
+
+
+ Range Color
+
+
+
+
+
+
+
+
+ Start angle
+
+
+
+
+
+ End angle
+
+
+
+
+
+
+ Reverse
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.js b/vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.vue b/vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.vue
new file mode 100644
index 00000000..74c1603d
--- /dev/null
+++ b/vue-options-api-demos/gauges/radial-gauge/scale-ranges/main.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/gauges/rtl/main.js b/vue-options-api-demos/gauges/rtl/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/gauges/rtl/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/gauges/rtl/main.vue b/vue-options-api-demos/gauges/rtl/main.vue
new file mode 100644
index 00000000..82ac669f
--- /dev/null
+++ b/vue-options-api-demos/gauges/rtl/main.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/basic/BudgetComponent.vue b/vue-options-api-demos/grid/basic/BudgetComponent.vue
new file mode 100644
index 00000000..865b74a3
--- /dev/null
+++ b/vue-options-api-demos/grid/basic/BudgetComponent.vue
@@ -0,0 +1,23 @@
+
+ {{ formattedNumber }}
+
+
+
+
diff --git a/vue-options-api-demos/grid/basic/ContactNameComponent.vue b/vue-options-api-demos/grid/basic/ContactNameComponent.vue
new file mode 100644
index 00000000..66f551dc
--- /dev/null
+++ b/vue-options-api-demos/grid/basic/ContactNameComponent.vue
@@ -0,0 +1,26 @@
+
+
+
+
{{ dataItem.full_name }}
+
+
+
+
diff --git a/vue-options-api-demos/grid/basic/EngagementComponent.vue b/vue-options-api-demos/grid/basic/EngagementComponent.vue
new file mode 100644
index 00000000..bfafa06c
--- /dev/null
+++ b/vue-options-api-demos/grid/basic/EngagementComponent.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/basic/FlagComponent.vue b/vue-options-api-demos/grid/basic/FlagComponent.vue
new file mode 100644
index 00000000..a5881318
--- /dev/null
+++ b/vue-options-api-demos/grid/basic/FlagComponent.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/basic/Grid.vue b/vue-options-api-demos/grid/basic/Grid.vue
new file mode 100644
index 00000000..c41c8f2e
--- /dev/null
+++ b/vue-options-api-demos/grid/basic/Grid.vue
@@ -0,0 +1,512 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ exportExcelMessage }}
+
+ {{ exportPdfMessage }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/basic/IsOnlineComponent.vue b/vue-options-api-demos/grid/basic/IsOnlineComponent.vue
new file mode 100644
index 00000000..c41d77a8
--- /dev/null
+++ b/vue-options-api-demos/grid/basic/IsOnlineComponent.vue
@@ -0,0 +1,20 @@
+
+
+ {{ dataItem.is_online === true ? "Online" : "Offline" }}
+
+
+
+
diff --git a/vue-options-api-demos/grid/basic/employees.json b/vue-options-api-demos/grid/basic/employees.json
new file mode 100644
index 00000000..b1240ebd
--- /dev/null
+++ b/vue-options-api-demos/grid/basic/employees.json
@@ -0,0 +1,1403 @@
+[
+ {
+ "id": "848e6002-8a92-447d-951b-1ffd5e695578",
+ "full_name": "Sig Jeannel",
+ "job_title": "Human Resources Assistant III",
+ "country": "US",
+ "is_online": true,
+ "rating": 3,
+ "target": 100,
+ "budget": 47601,
+ "phone": "(936) 9429601",
+ "address": "138 Buhler Avenue",
+ "img_id": 1,
+ "gender": "M"
+ },
+ {
+ "id": "19d18d40-0e64-4837-9420-92130a0ed253",
+ "full_name": "Shelden Greyes",
+ "job_title": "Operator",
+ "country": "GB",
+ "is_online": true,
+ "rating": 5,
+ "target": 40,
+ "budget": 12253,
+ "phone": "(343) 6656271",
+ "address": "2 Waxwing Point",
+ "img_id": 2,
+ "gender": "M"
+ },
+ {
+ "id": "bebdc6eb-9179-484a-917d-2e16a23bfdfe",
+ "full_name": "Megen Cody",
+ "job_title": "Operator",
+ "country": "BR",
+ "is_online": true,
+ "rating": 1,
+ "target": 66,
+ "budget": 96183,
+ "phone": "(178) 2336256",
+ "address": "4082 Stephen Court",
+ "img_id": 6,
+ "gender": "F"
+ },
+ {
+ "id": "38b08b88-e482-46fc-8976-83590c02ec23",
+ "full_name": "Clevey Thursfield",
+ "job_title": "VP Quality Control",
+ "country": "BR",
+ "is_online": true,
+ "rating": 2,
+ "target": 58,
+ "budget": 54936,
+ "phone": "(277) 7415010",
+ "address": "1563 Glacier Hill Parkway",
+ "img_id": 5,
+ "gender": "M"
+ },
+ {
+ "id": "2aac53f8-b72d-4629-9082-6d8239a8fecf",
+ "full_name": "Ruthi Baldini",
+ "job_title": "Data Coordiator",
+ "country": "BR",
+ "is_online": true,
+ "rating": 3,
+ "target": 37,
+ "budget": 46572,
+ "phone": "(766) 5691615",
+ "address": "6 Laurel Avenue",
+ "img_id": 8,
+ "gender": "F"
+ },
+ {
+ "id": "1aa789e5-de01-406e-a2ee-cc5ce20f7e34",
+ "full_name": "Annecorinne Morter",
+ "job_title": "Professor",
+ "country": "FR",
+ "is_online": false,
+ "rating": 2,
+ "target": 35,
+ "budget": 37198,
+ "phone": "(807) 2524830",
+ "address": "106 Green Street",
+ "img_id": 3,
+ "gender": "F"
+ },
+ {
+ "id": "d2ff1b02-3808-44aa-9056-3b5df34bf865",
+ "full_name": "Gracia Punyer",
+ "job_title": "Assistant Manager",
+ "country": "ES",
+ "is_online": true,
+ "rating": 4,
+ "target": 64,
+ "budget": 84752,
+ "phone": "(515) 9749536",
+ "address": "69 Brentwood Alley",
+ "img_id": 2,
+ "gender": "F"
+ },
+ {
+ "id": "26b2b760-27e8-47a6-81c2-07870d1b2b30",
+ "full_name": "Duky Hurring",
+ "job_title": "Account Executive",
+ "country": "BR",
+ "is_online": false,
+ "rating": 3,
+ "target": 61,
+ "budget": -1266,
+ "phone": "(897) 7202034",
+ "address": "39 Morning Circle",
+ "img_id": 3,
+ "gender": "M"
+ },
+ {
+ "id": "91c6b652-4206-4a0c-bac6-dc21283a72d7",
+ "full_name": "Briana Shemelt",
+ "job_title": "Professor",
+ "country": "US",
+ "is_online": false,
+ "rating": 3,
+ "target": 63,
+ "budget": -9308,
+ "phone": "(205) 2560799",
+ "address": "11 Walton Court",
+ "img_id": 2,
+ "gender": "F"
+ },
+ {
+ "id": "1e8289dc-2ef3-4045-ad6b-786d00368427",
+ "full_name": "Lexis Mostin",
+ "job_title": "Analyst Programmer",
+ "country": "FR",
+ "is_online": true,
+ "rating": 4,
+ "target": 81,
+ "budget": 38153,
+ "phone": "(903) 8388089",
+ "address": "38547 Westend Way",
+ "img_id": 4,
+ "gender": "F"
+ },
+ {
+ "id": "797387bd-c247-48b3-97b6-5e75791f8809",
+ "full_name": "Felizio Gooda",
+ "job_title": "GIS Technical Architect",
+ "country": "DE",
+ "is_online": true,
+ "rating": 3,
+ "target": 89,
+ "budget": 81585,
+ "phone": "(372) 2389397",
+ "address": "9 Summer Ridge Circle",
+ "img_id": 2,
+ "gender": "M"
+ },
+ {
+ "id": "24c541b0-4978-4072-84d0-abe94fcd0756",
+ "full_name": "Aubry Oxberry",
+ "job_title": "Financial Advisor",
+ "country": "BR",
+ "is_online": false,
+ "rating": 2,
+ "target": 3,
+ "budget": -6095,
+ "phone": "(665) 4176083",
+ "address": "06 Lerdahl Point",
+ "img_id": 10,
+ "gender": "F"
+ },
+ {
+ "id": "d3416440-7411-42cc-a913-7dd319ca8311",
+ "full_name": "Orly Glasbey",
+ "job_title": "Environmental Tech",
+ "country": "BR",
+ "is_online": true,
+ "rating": 5,
+ "target": 63,
+ "budget": 63945,
+ "phone": "(449) 8482879",
+ "address": "4035 Porter Parkway",
+ "img_id": 6,
+ "gender": "F"
+ },
+ {
+ "id": "139066b5-60c5-4cf5-9afe-fb4e5558b087",
+ "full_name": "Stephanus Culp",
+ "job_title": "Cost Accountant",
+ "country": "BR",
+ "is_online": false,
+ "rating": 2,
+ "target": 60,
+ "budget": 10613,
+ "phone": "(148) 3124030",
+ "address": "57028 Moland Terrace",
+ "img_id": 8,
+ "gender": "M"
+ },
+ {
+ "id": "eb844971-b97d-4f79-bd5a-a266fcfaaf70",
+ "full_name": "Roseanna Janecek",
+ "job_title": "Database Administrator IV",
+ "country": "FR",
+ "is_online": false,
+ "rating": 4,
+ "target": 97,
+ "budget": 77351,
+ "phone": "(125) 4421623",
+ "address": "21973 Beilfuss Alley",
+ "img_id": 4,
+ "gender": "F"
+ },
+ {
+ "id": "5cb391fe-4855-445c-a8b8-617c04d1d999",
+ "full_name": "Weidar McCombe",
+ "job_title": "Civil Engineer",
+ "country": "FR",
+ "is_online": true,
+ "rating": 1,
+ "target": 77,
+ "budget": 35924,
+ "phone": "(488) 7911627",
+ "address": "7 Dahle Terrace",
+ "img_id": 1,
+ "gender": "M"
+ },
+ {
+ "id": "4ba9ad7e-d8b7-40e7-b8cd-67a8e743a249",
+ "full_name": "Evelin Spirritt",
+ "job_title": "Analyst Programmer",
+ "country": "BR",
+ "is_online": false,
+ "rating": 2,
+ "target": 18,
+ "budget": 58552,
+ "phone": "(821) 9538078",
+ "address": "89418 Knutson Pass",
+ "img_id": 1,
+ "gender": "M"
+ },
+ {
+ "id": "e4a31407-39d1-4ab7-aad1-4e026a8c42fa",
+ "full_name": "Andria Helbeck",
+ "job_title": "Nurse Practicioner",
+ "country": "BR",
+ "is_online": true,
+ "rating": 4,
+ "target": 53,
+ "budget": 72526,
+ "phone": "(387) 9614638",
+ "address": "8589 Vernon Drive",
+ "img_id": 8,
+ "gender": "F"
+ },
+ {
+ "id": "cd050499-dbf1-4a43-86ab-54feaacef401",
+ "full_name": "Mariellen Ravelus",
+ "job_title": "Systems Administrator I",
+ "country": "DE",
+ "is_online": true,
+ "rating": 2,
+ "target": 22,
+ "budget": -6659,
+ "phone": "(300) 6741661",
+ "address": "707 Gale Hill",
+ "img_id": 9,
+ "gender": "F"
+ },
+ {
+ "id": "fda1c419-c0b8-4278-94b0-2ebef6bda164",
+ "full_name": "Corri Pergens",
+ "job_title": "Help Desk Operator",
+ "country": "BR",
+ "is_online": true,
+ "rating": 2,
+ "target": 74,
+ "budget": 12376,
+ "phone": "(769) 7145603",
+ "address": "856 Forest Crossing",
+ "img_id": 3,
+ "gender": "F"
+ },
+ {
+ "id": "4a962db9-136e-4fcc-a683-2f961e27fb6e",
+ "full_name": "Friedrick Macknish",
+ "job_title": "Human Resources Assistant II",
+ "country": "FR",
+ "is_online": true,
+ "rating": 2,
+ "target": 38,
+ "budget": 97848,
+ "phone": "(196) 4156385",
+ "address": "157 Talisman Trail",
+ "img_id": 9,
+ "gender": "M"
+ },
+ {
+ "id": "fa47e456-83c4-4fdc-b57b-07effb279967",
+ "full_name": "Georgette Trevorrow",
+ "job_title": "VP Accounting",
+ "country": "FR",
+ "is_online": true,
+ "rating": 3,
+ "target": 3,
+ "budget": 17327,
+ "phone": "(319) 1412549",
+ "address": "07 Marquette Point",
+ "img_id": 3,
+ "gender": "F"
+ },
+ {
+ "id": "67656444-fbcd-4813-84e7-1bdcd82f803e",
+ "full_name": "Vanya Goalby",
+ "job_title": "Senior Cost Accountant",
+ "country": "FR",
+ "is_online": false,
+ "rating": 2,
+ "target": 77,
+ "budget": 33584,
+ "phone": "(496) 7538982",
+ "address": "2192 Iowa Lane",
+ "img_id": 6,
+ "gender": "F"
+ },
+ {
+ "id": "05c098c2-9617-4e66-928a-e29b97297138",
+ "full_name": "Abel Ansell",
+ "job_title": "Actuary",
+ "country": "US",
+ "is_online": false,
+ "rating": 4,
+ "target": 52,
+ "budget": 12312,
+ "phone": "(571) 9908377",
+ "address": "4355 Iowa Parkway",
+ "img_id": 4,
+ "gender": "M"
+ },
+ {
+ "id": "3b263e99-51bf-4461-bb20-d4303d326cd9",
+ "full_name": "Odille Barus",
+ "job_title": "Speech Pathologist",
+ "country": "FR",
+ "is_online": true,
+ "rating": 4,
+ "target": 60,
+ "budget": 46911,
+ "phone": "(974) 1137672",
+ "address": "496 Lotheville Avenue",
+ "img_id": 8,
+ "gender": "F"
+ },
+ {
+ "id": "c09ddfaf-569e-4a75-8e53-1be27cf25927",
+ "full_name": "Rudolf Consadine",
+ "job_title": "Structural Analysis Engineer",
+ "country": "FR",
+ "is_online": true,
+ "rating": 4,
+ "target": 20,
+ "budget": 94258,
+ "phone": "(450) 7612220",
+ "address": "93 Thierer Park",
+ "img_id": 6,
+ "gender": "M"
+ },
+ {
+ "id": "a48abbc9-6143-4f77-a720-0b76ad862a9a",
+ "full_name": "Christabel Bick",
+ "job_title": "Engineer III",
+ "country": "FR",
+ "is_online": true,
+ "rating": 5,
+ "target": 0,
+ "budget": 65359,
+ "phone": "(361) 5159566",
+ "address": "191 Bunting Pass",
+ "img_id": 5,
+ "gender": "F"
+ },
+ {
+ "id": "d8816aee-4230-4392-a045-0a9c297451f7",
+ "full_name": "Lancelot Tanzer",
+ "job_title": "Senior Developer",
+ "country": "US",
+ "is_online": true,
+ "rating": 5,
+ "target": 80,
+ "budget": 13246,
+ "phone": "(502) 3949900",
+ "address": "4287 Corben Plaza",
+ "img_id": 8,
+ "gender": "M"
+ },
+ {
+ "id": "9f5af32c-fb0d-4449-a658-f2c7f182b63a",
+ "full_name": "Bink Byk",
+ "job_title": "Software Engineer I",
+ "country": "FR",
+ "is_online": false,
+ "rating": 3,
+ "target": 17,
+ "budget": 56472,
+ "phone": "(475) 9070061",
+ "address": "075 Eggendart Avenue",
+ "img_id": 9,
+ "gender": "M"
+ },
+ {
+ "id": "dbd7f48a-6540-4560-bb7c-cd60456b55b8",
+ "full_name": "Rhys Pheazey",
+ "job_title": "Speech Pathologist",
+ "country": "BR",
+ "is_online": false,
+ "rating": 5,
+ "target": 98,
+ "budget": 62483,
+ "phone": "(365) 8904529",
+ "address": "987 Carioca Lane",
+ "img_id": 9,
+ "gender": "M"
+ },
+ {
+ "id": "844189fe-d36e-4e06-9761-932259701fc8",
+ "full_name": "Lyndell Howieson",
+ "job_title": "Speech Pathologist",
+ "country": "DE",
+ "is_online": true,
+ "rating": 2,
+ "target": 82,
+ "budget": 16694,
+ "phone": "(461) 3130038",
+ "address": "9 Pennsylvania Crossing",
+ "img_id": 8,
+ "gender": "F"
+ },
+ {
+ "id": "5544d9d5-40ea-4e5a-8fb8-f5016b313b8f",
+ "full_name": "Cassey Fitchell",
+ "job_title": "Software Engineer III",
+ "country": "FR",
+ "is_online": true,
+ "rating": 2,
+ "target": 10,
+ "budget": 91253,
+ "phone": "(985) 5060547",
+ "address": "652 Merry Place",
+ "img_id": 9,
+ "gender": "F"
+ },
+ {
+ "id": "1c669764-3cff-424a-b7e4-e7711d6c7d6c",
+ "full_name": "Coralyn Steljes",
+ "job_title": "Accounting Assistant III",
+ "country": "FR",
+ "is_online": false,
+ "rating": 2,
+ "target": 81,
+ "budget": -9871,
+ "phone": "(760) 5696853",
+ "address": "4 Norway Maple Pass",
+ "img_id": 9,
+ "gender": "F"
+ },
+ {
+ "id": "4cc649dc-7f85-40ab-bc59-950f37268a65",
+ "full_name": "Bruis Creavin",
+ "job_title": "Nuclear Power Engineer",
+ "country": "BR",
+ "is_online": false,
+ "rating": 1,
+ "target": 59,
+ "budget": -5798,
+ "phone": "(570) 8801169",
+ "address": "71 Carioca Park",
+ "img_id": 6,
+ "gender": "M"
+ },
+ {
+ "id": "8c9505f1-e8f8-4ba6-8c9a-5a1d089c6f09",
+ "full_name": "Adrianne Peery",
+ "job_title": "Chief Design Engineer",
+ "country": "FR",
+ "is_online": false,
+ "rating": 2,
+ "target": 2,
+ "budget": 56575,
+ "phone": "(793) 1143493",
+ "address": "3 2nd Drive",
+ "img_id": 7,
+ "gender": "F"
+ },
+ {
+ "id": "ced0905e-44ac-4317-a203-76994e53a751",
+ "full_name": "Port Gerauld",
+ "job_title": "Senior Cost Accountant",
+ "country": "FR",
+ "is_online": true,
+ "rating": 2,
+ "target": 27,
+ "budget": 97919,
+ "phone": "(155) 5488067",
+ "address": "9 High Crossing Center",
+ "img_id": 5,
+ "gender": "M"
+ },
+ {
+ "id": "f0bcc7cd-999e-4611-a04f-7bdc16bc6160",
+ "full_name": "Boy Antoszewski",
+ "job_title": "VP Accounting",
+ "country": "GB",
+ "is_online": true,
+ "rating": 2,
+ "target": 11,
+ "budget": 74779,
+ "phone": "(715) 9192627",
+ "address": "3773 Hazelcrest Road",
+ "img_id": 6,
+ "gender": "M"
+ },
+ {
+ "id": "322540e3-b72e-4b7d-ae4a-d927911340b7",
+ "full_name": "Gib Yakebowitch",
+ "job_title": "Marketing Assistant",
+ "country": "BR",
+ "is_online": false,
+ "rating": 5,
+ "target": 57,
+ "budget": 89028,
+ "phone": "(923) 6953600",
+ "address": "7 Mariners Cove Point",
+ "img_id": 8,
+ "gender": "M"
+ },
+ {
+ "id": "b1ed798d-6177-4a27-9571-2e02be932214",
+ "full_name": "Minerva Gilders",
+ "job_title": "Administrative Officer",
+ "country": "BR",
+ "is_online": false,
+ "rating": 3,
+ "target": 54,
+ "budget": 32267,
+ "phone": "(773) 8863232",
+ "address": "82 Annamark Way",
+ "img_id": 4,
+ "gender": "F"
+ },
+ {
+ "id": "d26bcf84-a8b4-471c-a582-2de64d7e7715",
+ "full_name": "Wait Peperell",
+ "job_title": "Web Designer III",
+ "country": "US",
+ "is_online": true,
+ "rating": 4,
+ "target": 94,
+ "budget": 72251,
+ "phone": "(419) 5806752",
+ "address": "0355 Petterle Avenue",
+ "img_id": 8,
+ "gender": "M"
+ },
+ {
+ "id": "da813d45-bd3b-4bfa-abdd-e12050a5da14",
+ "full_name": "Ailsun Esmead",
+ "job_title": "Software Test Engineer III",
+ "country": "FR",
+ "is_online": true,
+ "rating": 1,
+ "target": 12,
+ "budget": 69596,
+ "phone": "(852) 7039628",
+ "address": "0 Lunder Crossing",
+ "img_id": 8,
+ "gender": "F"
+ },
+ {
+ "id": "944d8752-ef63-47bc-8db0-f40808d50b15",
+ "full_name": "Vallie Van der Velde",
+ "job_title": "Nurse",
+ "country": "GB",
+ "is_online": true,
+ "rating": 3,
+ "target": 89,
+ "budget": 19530,
+ "phone": "(331) 7690832",
+ "address": "2 Almo Lane",
+ "img_id": 4,
+ "gender": "F"
+ },
+ {
+ "id": "3d2f991c-58ef-436d-912e-49496fd2065c",
+ "full_name": "Dov Amber",
+ "job_title": "Sales Representative",
+ "country": "FR",
+ "is_online": false,
+ "rating": 4,
+ "target": 55,
+ "budget": 61106,
+ "phone": "(793) 4768356",
+ "address": "4 Rockefeller Street",
+ "img_id": 3,
+ "gender": "M"
+ },
+ {
+ "id": "29b406e9-ca20-45cb-8630-6df3a632276a",
+ "full_name": "Tedie Alu",
+ "job_title": "Business Systems Analyst",
+ "country": "FR",
+ "is_online": false,
+ "rating": 1,
+ "target": 76,
+ "budget": 3114,
+ "phone": "(602) 5831373",
+ "address": "28 Claremont Plaza",
+ "img_id": 5,
+ "gender": "M"
+ },
+ {
+ "id": "767de27a-421c-4147-a552-26ac56390339",
+ "full_name": "Tally Rizzi",
+ "job_title": "Civil Engineer",
+ "country": "US",
+ "is_online": false,
+ "rating": 1,
+ "target": 5,
+ "budget": 78575,
+ "phone": "(302) 6856300",
+ "address": "1 Roth Park",
+ "img_id": 10,
+ "gender": "M"
+ },
+ {
+ "id": "2b6e6902-11b5-4ca7-8a59-c32b3f57533b",
+ "full_name": "Ilise Lewnden",
+ "job_title": "Database Administrator I",
+ "country": "BR",
+ "is_online": false,
+ "rating": 4,
+ "target": 33,
+ "budget": -1059,
+ "phone": "(659) 8660881",
+ "address": "19 Stuart Alley",
+ "img_id": 2,
+ "gender": "F"
+ },
+ {
+ "id": "c891e87f-b19b-4cb5-8902-b19c59e37494",
+ "full_name": "Farr Penwright",
+ "job_title": "Senior Editor",
+ "country": "US",
+ "is_online": true,
+ "rating": 3,
+ "target": 82,
+ "budget": 30505,
+ "phone": "(505) 3900066",
+ "address": "9200 Karstens Crossing",
+ "img_id": 6,
+ "gender": "M"
+ },
+ {
+ "id": "65821428-adc7-4743-9dd8-cf62400e62f2",
+ "full_name": "Chantal Bidgod",
+ "job_title": "VP Sales",
+ "country": "BR",
+ "is_online": false,
+ "rating": 3,
+ "target": 62,
+ "budget": 25742,
+ "phone": "(746) 3962702",
+ "address": "8807 Kinsman Drive",
+ "img_id": 2,
+ "gender": "F"
+ },
+ {
+ "id": "f42907e0-d92c-4fb0-b886-2e84331ffe28",
+ "full_name": "Johanna Bergin",
+ "job_title": "Electrical Engineer",
+ "country": "BR",
+ "is_online": false,
+ "rating": 2,
+ "target": 54,
+ "budget": 25864,
+ "phone": "(720) 6442547",
+ "address": "93166 Spohn Court",
+ "img_id": 3,
+ "gender": "F"
+ },
+ {
+ "id": "4531be30-eec7-477f-bdc5-88acb8d902af",
+ "full_name": "Padriac Syphas",
+ "job_title": "Marketing Assistant",
+ "country": "BR",
+ "is_online": true,
+ "rating": 1,
+ "target": 50,
+ "budget": 20879,
+ "phone": "(606) 9062546",
+ "address": "50465 Buena Vista Plaza",
+ "img_id": 5,
+ "gender": "M"
+ },
+ {
+ "id": "4f0ab8f6-7a36-4a5c-a513-d5495223a9cd",
+ "full_name": "Garey De Maria",
+ "job_title": "Operator",
+ "country": "US",
+ "is_online": true,
+ "rating": 2,
+ "target": 54,
+ "budget": 94251,
+ "phone": "(972) 1133958",
+ "address": "24 Maple Wood Terrace",
+ "img_id": 9,
+ "gender": "M"
+ },
+ {
+ "id": "13556e73-d43a-485d-8603-cbf1769bd0ac",
+ "full_name": "Glenn Thorwarth",
+ "job_title": "Developer IV",
+ "country": "BR",
+ "is_online": false,
+ "rating": 5,
+ "target": 39,
+ "budget": 33511,
+ "phone": "(394) 3115946",
+ "address": "8 Dryden Park",
+ "img_id": 1,
+ "gender": "M"
+ },
+ {
+ "id": "c8389213-a2cd-4bb8-ba99-9c29e9b70881",
+ "full_name": "Bron Crosson",
+ "job_title": "GIS Technical Architect",
+ "country": "FR",
+ "is_online": true,
+ "rating": 2,
+ "target": 80,
+ "budget": 62081,
+ "phone": "(686) 7934926",
+ "address": "974 Mayfield Place",
+ "img_id": 9,
+ "gender": "M"
+ },
+ {
+ "id": "cd233a4e-0315-496d-8f5f-4c8787b0f1ba",
+ "full_name": "Garey Malecky",
+ "job_title": "Account Executive",
+ "country": "BR",
+ "is_online": false,
+ "rating": 5,
+ "target": 51,
+ "budget": 76354,
+ "phone": "(304) 6324519",
+ "address": "3 Paget Court",
+ "img_id": 9,
+ "gender": "M"
+ },
+ {
+ "id": "339838eb-99dc-4fc0-8e18-060dbcf6bf78",
+ "full_name": "Elisabet Kimblin",
+ "job_title": "Automation Specialist I",
+ "country": "US",
+ "is_online": true,
+ "rating": 3,
+ "target": 35,
+ "budget": 26755,
+ "phone": "(904) 3334563",
+ "address": "75 Buell Court",
+ "img_id": 1,
+ "gender": "F"
+ },
+ {
+ "id": "90a03a5a-1f16-4721-8c56-af4bb89a1f57",
+ "full_name": "Berk Uttley",
+ "job_title": "Health Coach IV",
+ "country": "FR",
+ "is_online": false,
+ "rating": 4,
+ "target": 58,
+ "budget": 82064,
+ "phone": "(200) 2124940",
+ "address": "4 Mockingbird Trail",
+ "img_id": 8,
+ "gender": "M"
+ },
+ {
+ "id": "ce5ba778-43eb-4658-a6bd-56f04e6f125f",
+ "full_name": "Kenny Clackers",
+ "job_title": "Assistant Manager",
+ "country": "FR",
+ "is_online": true,
+ "rating": 4,
+ "target": 37,
+ "budget": 47477,
+ "phone": "(926) 3235464",
+ "address": "53315 Bashford Lane",
+ "img_id": 2,
+ "gender": "M"
+ },
+ {
+ "id": "df3dffe4-6fb4-4a9c-8512-71f7cb508180",
+ "full_name": "Rickard Pingston",
+ "job_title": "Environmental Specialist",
+ "country": "BR",
+ "is_online": true,
+ "rating": 5,
+ "target": 72,
+ "budget": 94173,
+ "phone": "(902) 4658383",
+ "address": "8 Mesta Court",
+ "img_id": 2,
+ "gender": "M"
+ },
+ {
+ "id": "2757a92d-5eed-4215-818f-fdf15b6b27d0",
+ "full_name": "Hobard Clabburn",
+ "job_title": "Systems Administrator I",
+ "country": "BR",
+ "is_online": true,
+ "rating": 2,
+ "target": 37,
+ "budget": 66166,
+ "phone": "(711) 6587550",
+ "address": "29796 Mcbride Court",
+ "img_id": 2,
+ "gender": "M"
+ },
+ {
+ "id": "71ebd82a-f9f2-48ea-ada4-ce8db424df64",
+ "full_name": "Uri Champken",
+ "job_title": "Software Test Engineer IV",
+ "country": "BR",
+ "is_online": false,
+ "rating": 1,
+ "target": 39,
+ "budget": 65176,
+ "phone": "(514) 1953919",
+ "address": "78 Rowland Alley",
+ "img_id": 6,
+ "gender": "M"
+ },
+ {
+ "id": "b7a77c35-1f9f-45c5-ba44-7622d279b377",
+ "full_name": "Obidiah Fold",
+ "job_title": "Budget/Accounting Analyst I",
+ "country": "FR",
+ "is_online": false,
+ "rating": 5,
+ "target": 66,
+ "budget": 74529,
+ "phone": "(747) 8711780",
+ "address": "58 Lakeland Court",
+ "img_id": 9,
+ "gender": "M"
+ },
+ {
+ "id": "9c0fbca6-b793-4fdc-8dcf-5136cb5d049c",
+ "full_name": "Angelia Marconi",
+ "job_title": "Associate Professor",
+ "country": "FR",
+ "is_online": false,
+ "rating": 4,
+ "target": 91,
+ "budget": 38996,
+ "phone": "(530) 7506861",
+ "address": "7 Ohio Parkway",
+ "img_id": 2,
+ "gender": "F"
+ },
+ {
+ "id": "9083010c-4f59-49e7-96c6-894cbf24ed75",
+ "full_name": "Ronda Lock",
+ "job_title": "Quality Engineer",
+ "country": "US",
+ "is_online": false,
+ "rating": 5,
+ "target": 36,
+ "budget": 69903,
+ "phone": "(916) 6819628",
+ "address": "802 American Ash Street",
+ "img_id": 6,
+ "gender": "F"
+ },
+ {
+ "id": "4225013e-fd75-46f6-b678-b25675e131bc",
+ "full_name": "Rachele Fantham",
+ "job_title": "Business Systems Analyst",
+ "country": "FR",
+ "is_online": true,
+ "rating": 2,
+ "target": 100,
+ "budget": 79333,
+ "phone": "(652) 3112938",
+ "address": "62 Grim Center",
+ "img_id": 4,
+ "gender": "F"
+ },
+ {
+ "id": "b75a42e9-db84-479c-96b0-d88109abfebb",
+ "full_name": "Emanuel Deery",
+ "job_title": "Electrical Engineer",
+ "country": "BR",
+ "is_online": false,
+ "rating": 3,
+ "target": 93,
+ "budget": 77477,
+ "phone": "(860) 8318923",
+ "address": "850 Mifflin Junction",
+ "img_id": 8,
+ "gender": "M"
+ },
+ {
+ "id": "b2e28f42-7a35-4e23-b2e4-40fe3ed909ca",
+ "full_name": "Clay Ellins",
+ "job_title": "Design Engineer",
+ "country": "US",
+ "is_online": true,
+ "rating": 4,
+ "target": 98,
+ "budget": 4120,
+ "phone": "(682) 4688237",
+ "address": "458 Scoville Lane",
+ "img_id": 5,
+ "gender": "M"
+ },
+ {
+ "id": "4239103e-80bc-4f09-8655-c2165b063027",
+ "full_name": "Bettina Menlove",
+ "job_title": "Senior Financial Analyst",
+ "country": "FR",
+ "is_online": false,
+ "rating": 5,
+ "target": 78,
+ "budget": 80574,
+ "phone": "(293) 8801412",
+ "address": "29 Onsgard Junction",
+ "img_id": 8,
+ "gender": "F"
+ },
+ {
+ "id": "8442ff74-6f05-43f7-90de-b948a5c2c895",
+ "full_name": "Claiborne Willoughey",
+ "job_title": "Food Chemist",
+ "country": "US",
+ "is_online": true,
+ "rating": 5,
+ "target": 44,
+ "budget": 44673,
+ "phone": "(707) 3380798",
+ "address": "39114 Killdeer Terrace",
+ "img_id": 6,
+ "gender": "M"
+ },
+ {
+ "id": "1701041a-2ede-4c1d-a51b-8fe4b3ec1c35",
+ "full_name": "Desmond Gritskov",
+ "job_title": "Pharmacist",
+ "country": "BR",
+ "is_online": false,
+ "rating": 4,
+ "target": 66,
+ "budget": 45319,
+ "phone": "(412) 1336481",
+ "address": "6912 Farwell Street",
+ "img_id": 6,
+ "gender": "M"
+ },
+ {
+ "id": "609fd74e-e6c3-41ae-a227-d3d9caba0582",
+ "full_name": "Codee Maybery",
+ "job_title": "Clinical Specialist",
+ "country": "US",
+ "is_online": true,
+ "rating": 2,
+ "target": 26,
+ "budget": 43462,
+ "phone": "(682) 7969803",
+ "address": "4 Tennessee Plaza",
+ "img_id": 3,
+ "gender": "F"
+ },
+ {
+ "id": "f535ef7f-c79d-4936-af40-d062d2b2d5c0",
+ "full_name": "Denys Beynke",
+ "job_title": "Occupational Therapist",
+ "country": "BR",
+ "is_online": true,
+ "rating": 4,
+ "target": 60,
+ "budget": 32402,
+ "phone": "(110) 4341370",
+ "address": "99 Trailsway Park",
+ "img_id": 4,
+ "gender": "M"
+ },
+ {
+ "id": "ae126e65-b6ab-4388-ba5c-f6f5d54fc435",
+ "full_name": "Guthry Limpricht",
+ "job_title": "Geologist II",
+ "country": "DE",
+ "is_online": true,
+ "rating": 3,
+ "target": 65,
+ "budget": 68462,
+ "phone": "(100) 8946768",
+ "address": "3117 Commercial Crossing",
+ "img_id": 2,
+ "gender": "M"
+ },
+ {
+ "id": "9b1efdfc-4cce-4350-9516-028884fb1725",
+ "full_name": "Cammie Knoble",
+ "job_title": "Community Outreach Specialist",
+ "country": "GB",
+ "is_online": false,
+ "rating": 2,
+ "target": 1,
+ "budget": 70198,
+ "phone": "(352) 1663192",
+ "address": "55 Longview Place",
+ "img_id": 4,
+ "gender": "F"
+ },
+ {
+ "id": "a44c41e2-3adc-4d52-acb3-06f90e0214c9",
+ "full_name": "Kiri Espinal",
+ "job_title": "Accounting Assistant I",
+ "country": "FR",
+ "is_online": false,
+ "rating": 3,
+ "target": 47,
+ "budget": 3712,
+ "phone": "(946) 6686147",
+ "address": "90480 Chinook Drive",
+ "img_id": 4,
+ "gender": "F"
+ },
+ {
+ "id": "9d6d3063-7be8-49fe-be31-64d0d5949f02",
+ "full_name": "Joy Tiddy",
+ "job_title": "Engineer III",
+ "country": "FR",
+ "is_online": true,
+ "rating": 5,
+ "target": 80,
+ "budget": 61355,
+ "phone": "(849) 1097790",
+ "address": "76 Summerview Hill",
+ "img_id": 9,
+ "gender": "F"
+ },
+ {
+ "id": "44def3bb-7c65-45d3-aef6-bf8b49f934b3",
+ "full_name": "Arlene Karlsson",
+ "job_title": "Civil Engineer",
+ "country": "BR",
+ "is_online": true,
+ "rating": 4,
+ "target": 98,
+ "budget": 14267,
+ "phone": "(699) 4713080",
+ "address": "90 Dorton Point",
+ "img_id": 5,
+ "gender": "F"
+ },
+ {
+ "id": "7b991e13-bef7-4f19-bd18-d5aa9d263cba",
+ "full_name": "Melony Millwater",
+ "job_title": "Chief Design Engineer",
+ "country": "US",
+ "is_online": true,
+ "rating": 2,
+ "target": 27,
+ "budget": 67126,
+ "phone": "(352) 5197697",
+ "address": "65242 Derek Place",
+ "img_id": 1,
+ "gender": "F"
+ },
+ {
+ "id": "ab6704b8-20ed-4881-ab28-96e3d55f7792",
+ "full_name": "Mab Ballham",
+ "job_title": "Programmer Analyst II",
+ "country": "FR",
+ "is_online": false,
+ "rating": 1,
+ "target": 34,
+ "budget": 65648,
+ "phone": "(699) 9285470",
+ "address": "2579 Messerschmidt Crossing",
+ "img_id": 8,
+ "gender": "F"
+ },
+ {
+ "id": "03f0f5a0-8b7c-486e-ae4b-c9e5858bbde8",
+ "full_name": "Nixie MacAskie",
+ "job_title": "Structural Analysis Engineer",
+ "country": "BR",
+ "is_online": true,
+ "rating": 2,
+ "target": 13,
+ "budget": -5312,
+ "phone": "(434) 6153212",
+ "address": "59672 Village Court",
+ "img_id": 4,
+ "gender": "F"
+ },
+ {
+ "id": "6b63462d-b181-4055-813d-983002ea57b8",
+ "full_name": "Gianni Crafts",
+ "job_title": "Tax Accountant",
+ "country": "FR",
+ "is_online": false,
+ "rating": 3,
+ "target": 54,
+ "budget": 85744,
+ "phone": "(428) 3135618",
+ "address": "53766 Buhler Parkway",
+ "img_id": 8,
+ "gender": "M"
+ },
+ {
+ "id": "dcafac96-c436-4232-8d0e-eda10d029e1d",
+ "full_name": "Moyra Summerlie",
+ "job_title": "Business Systems Analyst",
+ "country": "FR",
+ "is_online": true,
+ "rating": 5,
+ "target": 3,
+ "budget": 19109,
+ "phone": "(960) 7792763",
+ "address": "127 Spohn Crossing",
+ "img_id": 6,
+ "gender": "F"
+ },
+ {
+ "id": "a765924f-8ffb-4186-8991-6000a6ce2652",
+ "full_name": "Hagan Trevers",
+ "job_title": "Mechanical Systems Engineer",
+ "country": "FR",
+ "is_online": false,
+ "rating": 2,
+ "target": 93,
+ "budget": 28290,
+ "phone": "(749) 8913157",
+ "address": "516 Clove Road",
+ "img_id": 7,
+ "gender": "M"
+ },
+ {
+ "id": "2c3423dd-81d0-4e41-987e-1c39956c9ba8",
+ "full_name": "Sela Westmacott",
+ "job_title": "Account Executive",
+ "country": "BR",
+ "is_online": false,
+ "rating": 3,
+ "target": 29,
+ "budget": 58239,
+ "phone": "(130) 9778509",
+ "address": "81 Maple Point",
+ "img_id": 2,
+ "gender": "F"
+ },
+ {
+ "id": "e8bce62e-3bf4-4232-801c-bbcc8dab2e74",
+ "full_name": "Lilia Wiz",
+ "job_title": "VP Product Management",
+ "country": "FR",
+ "is_online": false,
+ "rating": 1,
+ "target": 65,
+ "budget": 1438,
+ "phone": "(418) 5940094",
+ "address": "905 Hauk Point",
+ "img_id": 1,
+ "gender": "F"
+ },
+ {
+ "id": "5b9b9235-e0f2-4102-b5f1-d512774e7191",
+ "full_name": "Orlan MacAlpin",
+ "job_title": "Statistician I",
+ "country": "US",
+ "is_online": false,
+ "rating": 1,
+ "target": 1,
+ "budget": 9094,
+ "phone": "(512) 7106617",
+ "address": "6055 Truax Way",
+ "img_id": 2,
+ "gender": "M"
+ },
+ {
+ "id": "1124d1b2-6ac3-4f2f-ba35-1da116844b0e",
+ "full_name": "Ty Nutton",
+ "job_title": "Speech Pathologist",
+ "country": "FR",
+ "is_online": false,
+ "rating": 5,
+ "target": 88,
+ "budget": 76684,
+ "phone": "(250) 2530424",
+ "address": "37247 Merry Plaza",
+ "img_id": 1,
+ "gender": "M"
+ },
+ {
+ "id": "01e7f525-ab3f-48b7-941f-c6ad601ea69f",
+ "full_name": "Mirelle Jandl",
+ "job_title": "Civil Engineer",
+ "country": "DE",
+ "is_online": true,
+ "rating": 3,
+ "target": 19,
+ "budget": 94486,
+ "phone": "(871) 7917453",
+ "address": "31 Anderson Hill",
+ "img_id": 10,
+ "gender": "F"
+ },
+ {
+ "id": "078b38d3-79a5-4df1-bd97-f83e300224a4",
+ "full_name": "Diann Bertram",
+ "job_title": "Structural Engineer",
+ "country": "BR",
+ "is_online": true,
+ "rating": 2,
+ "target": 38,
+ "budget": 2769,
+ "phone": "(716) 9445650",
+ "address": "958 Swallow Drive",
+ "img_id": 4,
+ "gender": "F"
+ },
+ {
+ "id": "7ca6af51-11bc-44f3-b92f-7af02923d040",
+ "full_name": "Cindra Slobom",
+ "job_title": "Web Designer III",
+ "country": "BR",
+ "is_online": true,
+ "rating": 5,
+ "target": 48,
+ "budget": 81624,
+ "phone": "(409) 9223432",
+ "address": "82525 Northridge Junction",
+ "img_id": 1,
+ "gender": "F"
+ },
+ {
+ "id": "86a585e1-b76d-43b5-982d-e74b5b4b616b",
+ "full_name": "Tymon Mattheissen",
+ "job_title": "Dental Hygienist",
+ "country": "FR",
+ "is_online": false,
+ "rating": 2,
+ "target": 51,
+ "budget": 42972,
+ "phone": "(724) 3234885",
+ "address": "64363 Anzinger Plaza",
+ "img_id": 3,
+ "gender": "M"
+ },
+ {
+ "id": "37e366fb-9371-4df5-980c-e9678ec9cde2",
+ "full_name": "Fancie Heighton",
+ "job_title": "Paralegal",
+ "country": "FR",
+ "is_online": true,
+ "rating": 5,
+ "target": 52,
+ "budget": 67403,
+ "phone": "(738) 9982239",
+ "address": "4353 Hermina Junction",
+ "img_id": 1,
+ "gender": "F"
+ },
+ {
+ "id": "b7df7c2a-4d40-4c03-bfb6-ab6d6930340c",
+ "full_name": "Kit Utteridge",
+ "job_title": "Office Assistant I",
+ "country": "FR",
+ "is_online": true,
+ "rating": 4,
+ "target": 93,
+ "budget": 36268,
+ "phone": "(710) 2371400",
+ "address": "46806 Moland Center",
+ "img_id": 7,
+ "gender": "F"
+ },
+ {
+ "id": "7d740468-fad9-4687-895b-cee07aa3bc3d",
+ "full_name": "Lea Willey",
+ "job_title": "VP Quality Control",
+ "country": "US",
+ "is_online": false,
+ "rating": 3,
+ "target": 19,
+ "budget": 54614,
+ "phone": "(304) 3327700",
+ "address": "1 Moland Crossing",
+ "img_id": 6,
+ "gender": "F"
+ },
+ {
+ "id": "88df162f-24fa-495d-a65c-b948607193b8",
+ "full_name": "Arri Halton",
+ "job_title": "Staff Accountant II",
+ "country": "GB",
+ "is_online": true,
+ "rating": 5,
+ "target": 73,
+ "budget": 32500,
+ "phone": "(743) 8449571",
+ "address": "3 Starling Trail",
+ "img_id": 3,
+ "gender": "M"
+ },
+ {
+ "id": "cb93d087-2f15-43cd-9bc3-89716e39a724",
+ "full_name": "Malva Pierpoint",
+ "job_title": "Operator",
+ "country": "US",
+ "is_online": true,
+ "rating": 4,
+ "target": 98,
+ "budget": 20312,
+ "phone": "(423) 8195288",
+ "address": "57584 Algoma Plaza",
+ "img_id": 1,
+ "gender": "F"
+ },
+ {
+ "id": "b76e54a1-1c46-49aa-9464-7dd9aa738b65",
+ "full_name": "Dalston Sabben",
+ "job_title": "Social Worker",
+ "country": "BR",
+ "is_online": true,
+ "rating": 4,
+ "target": 85,
+ "budget": 99048,
+ "phone": "(388) 2523908",
+ "address": "53578 Clove Lane",
+ "img_id": 4,
+ "gender": "M"
+ },
+ {
+ "id": "608f098b-16f8-4460-bb35-9599a8a74280",
+ "full_name": "Delinda Margrie",
+ "job_title": "Financial Advisor",
+ "country": "US",
+ "is_online": false,
+ "rating": 1,
+ "target": 1,
+ "budget": 8398,
+ "phone": "(702) 6480692",
+ "address": "9 Dapin Plaza",
+ "img_id": 9,
+ "gender": "F"
+ },
+ {
+ "id": "23b426f8-76d5-4808-84cb-c42bde8362fd",
+ "full_name": "Meggi Westman",
+ "job_title": "Librarian",
+ "country": "US",
+ "is_online": true,
+ "rating": 3,
+ "target": 64,
+ "budget": 63413,
+ "phone": "(682) 3495155",
+ "address": "82 Duke Terrace",
+ "img_id": 7,
+ "gender": "F"
+ },
+ {
+ "id": "7ecfb74e-64d9-43ee-a028-d2e3841acba9",
+ "full_name": "Bret Barnsdall",
+ "job_title": "Registered Nurse",
+ "country": "BR",
+ "is_online": true,
+ "rating": 3,
+ "target": 52,
+ "budget": 55153,
+ "phone": "(222) 2089814",
+ "address": "4 Corry Park",
+ "img_id": 8,
+ "gender": "M"
+ },
+ {
+ "id": "cf505561-d9e1-4d2a-93d5-4745d50595c2",
+ "full_name": "Matthus Shyres",
+ "job_title": "Marketing Manager",
+ "country": "FR",
+ "is_online": false,
+ "rating": 3,
+ "target": 68,
+ "budget": 33697,
+ "phone": "(539) 9486139",
+ "address": "460 Norway Maple Junction",
+ "img_id": 1,
+ "gender": "M"
+ }
+ ]
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/basic/en-US.js b/vue-options-api-demos/grid/basic/en-US.js
new file mode 100644
index 00000000..e4496d1f
--- /dev/null
+++ b/vue-options-api-demos/grid/basic/en-US.js
@@ -0,0 +1,297 @@
+// Custom Messages
+export const enCustomMessages = {
+ teamEfficiency: "Team Efficiency",
+ teamMembers: "Team Members",
+ dashboard: "Dashboard",
+ planning: "Planning",
+ profile: "Profile",
+ info: "Info",
+ language: "Language",
+ trend: "Trend",
+ volume: "Volume",
+ myTeam: "My Team",
+ allTeams: "All Teams",
+ teamCalendar: "Team Calendar",
+ saveChanges: "Save Changes",
+ cancel: "Cancel",
+ warehouse: "Coffee Warehouse",
+ startFreeTrial: "Start Free Trial",
+ buyNow: "Buy Now",
+ getSource: "Get the source code on GitHub",
+ demoInfo:
+ "This demo application is built using the following Kendo UI for Vue components.",
+ firstName: "First Name",
+ middleName: "Middle Name",
+ lastName: "Last Name",
+ email: "Email Address",
+ phoneNumber: "Phone Number",
+ country: "Country",
+ biography: "Short Biography",
+ public: "Include in public directory",
+ team: "Team",
+ employee: "Employee",
+ contactName: "Contact Name",
+ jobTitle: "Job Title",
+ status: "Status",
+ performance: "Performance",
+ rating: "Rating",
+ engagement: "Engagement",
+ budget: "Budget",
+ contacts: "Contacts",
+ address: "Address",
+ phone: "Phone",
+ gridSearch: "Search in all columns...",
+ exportExcel: "Export to Excel",
+ exportPdf: "Export to PDF"
+};
+
+// Kendo Component Messages
+export const enComponentMessages = {
+ // Grid
+ "kendo.grid.groupPanelEmpty":
+ "Drag a column header and drop it here to group by that column",
+ "kendo.grid.noRecords": "No records available.",
+ "kendo.grid.pagerFirstPage": "Go to the first page",
+ "kendo.grid.pagerPreviousPage": "Go to the previous page",
+ "kendo.grid.pagerNextPage": "Go to the next page",
+ "kendo.grid.pagerLastPage": "Go to the last page",
+ "kendo.grid.pagerPage": "Page",
+ "kendo.grid.pagerOf": "of",
+ "kendo.grid.pagerItems": "items",
+ "kendo.grid.pagerItemsPerPage": "items per page",
+ "kendo.grid.pagerPageNumberInputTitle": "Page Number",
+ "kendo.grid.filter": "Filter",
+ "kendo.grid.filterEqOperator": "Is equal to",
+ "kendo.grid.filterNotEqOperator": "Is not equal to",
+ "kendo.grid.filterIsNullOperator": "Is null",
+ "kendo.grid.filterIsNotNullOperator": "Is not null",
+ "kendo.grid.filterIsEmptyOperator": "Is empty",
+ "kendo.grid.filterIsNotEmptyOperator": "Is not empty",
+ "kendo.grid.filterStartsWithOperator": "Starts with",
+ "kendo.grid.filterContainsOperator": "Contains",
+ "kendo.grid.filterNotContainsOperator": "Does not contain",
+ "kendo.grid.filterEndsWithOperator": "Ends with",
+ "kendo.grid.filterGteOperator": "Is greater than or equal to",
+ "kendo.grid.filterGtOperator": "Is greater than",
+ "kendo.grid.filterLteOperator": "Is less than or equal to",
+ "kendo.grid.filterLtOperator": "Is less than",
+ "kendo.grid.filterIsTrue": "is true",
+ "kendo.grid.filterIsFalse": "is false",
+ "kendo.grid.filterBooleanAll": "(All)",
+ "kendo.grid.filterAfterOrEqualOperator": "Is after or equal to",
+ "kendo.grid.filterAfterOperator": "Is after",
+ "kendo.grid.filterBeforeOperator": "Is before",
+ "kendo.grid.filterBeforeOrEqualOperator": "Is before or equal to",
+ "kendo.grid.filterFilterButton": "Filter",
+ "kendo.grid.filterClearButton": "Clear",
+ "kendo.grid.filterAndLogic": "And",
+ "kendo.grid.filterOrLogic": "Or",
+ "kendo.grid.filterDateToggle": "Toggle calendar",
+ "kendo.grid.filterDateToday": "Today",
+ "kendo.grid.filterNumericDecrement": "Decrease value",
+ "kendo.grid.filterNumericIncrement": "Increase value",
+ "kendo.grid.loading": "Loading",
+ "kendo.grid.sort": "Sort",
+ "kendo.grid.columnMenu": "Column Menu",
+ "kendo.grid.columns": "Columns",
+ "kendo.grid.lock": "Lock",
+ "kendo.grid.unlock": "Unlock",
+ "kendo.grid.stick": "Stick",
+ "kendo.grid.unstick": "Unstick",
+ "kendo.grid.setColumnPosition": "Set Column Position",
+ "kendo.grid.sortAscending": "Sort Ascending",
+ "kendo.grid.sortDescending": "Sort Descending",
+ "kendo.grid.columnsApply": "Apply",
+ "kendo.grid.columnsReset": "Reset",
+ "kendo.grid.sortable": "Sortable",
+ "kendo.grid.sortedAscending": "Sorted ascending",
+ "kendo.grid.sortedDescending": "Sorted descending",
+ "kendo.grid.sortedDefault": "Not sorted",
+
+ // DropDowns
+ "kendo.autocomplete.noDataText": "No data found",
+ "kendo.autocomplete.clearTitle": "Clear",
+ "kendo.combobox.noDataText": "No data found",
+ "kendo.combobox.clearTitle": "Clear",
+ "kendo.dropdownlist.noDataText": "No data found",
+ "kendo.dropdownlist.clearTitle": "Clear",
+
+ // Calendar
+ "kendo.calendar.today": "TODAY",
+
+ // TextBox
+ "kendo.textbox.clearTitle": "Clear",
+
+ // DatePicker
+ "kendo.datepicker.today": "TODAY",
+ "kendo.datepicker.toggle": "Toggle calendar",
+
+ // DateInput
+ "kendo.dateinput.increment": "Increase value",
+ "kendo.dateinput.decrement": "Decrease value",
+
+ // NumericTextBox
+ "kendo.numerictextbox.increment": "Increase value",
+ "kendo.numerictextbox.decrement": "Decrease value",
+
+ // DateTimePicker
+ "kendo.datetimepicker.dateTab": "Date",
+ "kendo.datetimepicker.dateTabLabel": "Date tab",
+ "kendo.datetimepicker.timeTab": "Time",
+ "kendo.datetimepicker.timeTabLabel": "Time tab",
+ "kendo.datetimepicker.toggle": "Toggle popup",
+ "kendo.datetimepicker.accept": "Set",
+ "kendo.datetimepicker.acceptLabel": "Set",
+ "kendo.datetimepicker.cancel": "Cancel",
+ "kendo.datetimepicker.cancelLabel": "Cancel",
+ "kendo.datetimepicker.now": "NOW",
+ "kendo.datetimepicker.nowLabel": "Select now",
+ "kendo.datetimepicker.today": "TODAY",
+ "kendo.datetimepicker.prevButtonTitle": "Navigate to previous view",
+ "kendo.datetimepicker.nextButtonTitle": "Navigate to next view",
+
+ // TimePicker
+ "kendo.timepicker.accept": "Set",
+ "kendo.timepicker.acceptLabel": "Set",
+ "kendo.timepicker.cancel": "Cancel",
+ "kendo.timepicker.cancelLabel": "Cancel",
+ "kendo.timepicker.now": "Now",
+ "kendo.timepicker.nowLabel": "Now",
+ "kendo.timepicker.toggle": "Toggle time list",
+
+ // FileSelect
+ "kendo.fileselect.cancel": "Cancel",
+ "kendo.fileselect.clearSelectedFiles": "Clear",
+ "kendo.fileselect.dropFilesHere": "Drop files here to upload",
+ "kendo.fileselect.externalDropFilesHere":
+ "Drag and drop files here to upload",
+ "kendo.fileselect.filesBatchStatus": "files",
+ "kendo.fileselect.filesBatchStatusFailed": "files failed to upload.",
+ "kendo.fileselect.filesBatchStatusUploaded": "files successfully uploaded.",
+ "kendo.fileselect.fileStatusFailed": "File failed to upload.",
+ "kendo.fileselect.fileStatusUploaded": "File successfully uploaded.",
+ "kendo.fileselect.headerStatusPaused": "Paused",
+ "kendo.fileselect.headerStatusUploaded": "Done",
+ "kendo.fileselect.headerStatusUploading": "Uploading...",
+ "kendo.fileselect.invalidFileExtension": "File type not allowed.",
+ "kendo.fileselect.invalidMaxFileSize": "File size too large.",
+ "kendo.fileselect.invalidMinFileSize": "File size too small.",
+ "kendo.fileselect.remove": "Remove",
+ "kendo.fileselect.retry": "Retry",
+ "kendo.fileselect.select": "Select files...",
+ "kendo.fileselect.uploadSelectedFiles": "Upload files",
+
+ // Scheduler
+ "kendo.scheduler.agendaViewTitle": "Agenda",
+ "kendo.scheduler.allDay": "all day",
+ "kendo.scheduler.allEvents": "All events",
+ "kendo.scheduler.calendarToday": "TODAY",
+ "kendo.scheduler.cancel": "Cancel",
+ "kendo.scheduler.save": "Save",
+ "kendo.scheduler.editorEventTitle": "Title",
+ "kendo.scheduler.editorEventStart": "Start",
+ "kendo.scheduler.editorEventStartTimeZone": "Start Time Zone",
+ "kendo.scheduler.editorEventEnd": "End",
+ "kendo.scheduler.editorEventEndTimeZone": "End Time Zone",
+ "kendo.scheduler.dateHeader": "Date",
+ "kendo.scheduler.dayViewTitle": "Day",
+ "kendo.scheduler.deleteConfirmation":
+ "Are you sure you want to delete this event?",
+ "kendo.scheduler.deleteDialogTitle": "Delete Event",
+ "kendo.scheduler.deleteOccurrence": "Delete current occurrence",
+ "kendo.scheduler.deleteRecurringConfirmation":
+ "Do you want to delete only this event occurrence or the whole series?",
+ "kendo.scheduler.deleteRecurringDialogTitle": "Delete Recurring Item",
+ "kendo.scheduler.deleteSeries": "Delete the series",
+ "kendo.scheduler.deleteTitle": "Delete",
+ "kendo.scheduler.destroy": "Delete",
+ "kendo.scheduler.editOccurrence": "Edit current occurrence",
+ "kendo.scheduler.editorEventAllDay": "All Day Event",
+ "kendo.scheduler.editorEventDescription": "Description",
+ "kendo.scheduler.editorEventSeparateTimeZones": "End in different Time Zone",
+ "kendo.scheduler.editorEventTimeZone": "Specify Time Zone",
+ "kendo.scheduler.editorTitle": "Event",
+ "kendo.scheduler.editRecurringConfirmation":
+ "Do you want to edit only this event occurrence or the whole series?",
+ "kendo.scheduler.editRecurringDialogTitle": "Edit Recurring Item",
+ "kendo.scheduler.editSeries": "Edit the series",
+ "kendo.scheduler.eventHeader": "Event",
+ "kendo.scheduler.monthViewTitle": "Month",
+ "kendo.scheduler.multiDayViewTitle": "Multi-Day",
+ "kendo.scheduler.nextTitle": "Next",
+ "kendo.scheduler.previousTitle": "Previous",
+ "kendo.scheduler.recurrenceEditorDailyInterval": "day(s)",
+ "kendo.scheduler.recurrenceEditorDailyRepeatEvery": "Repeat every",
+ "kendo.scheduler.recurrenceEditorEndAfter": "After",
+ "kendo.scheduler.recurrenceEditorEndLabel": "End",
+ "kendo.scheduler.recurrenceEditorEndNever": "Never",
+ "kendo.scheduler.recurrenceEditorEndOccurrence": "occurrence(s)",
+ "kendo.scheduler.recurrenceEditorEndOn": "On",
+ "kendo.scheduler.recurrenceEditorFrequenciesDaily": "Daily",
+ "kendo.scheduler.recurrenceEditorFrequenciesMonthly": "Monthly",
+ "kendo.scheduler.recurrenceEditorFrequenciesNever": "Never",
+ "kendo.scheduler.recurrenceEditorFrequenciesWeekly": "Weekly",
+ "kendo.scheduler.recurrenceEditorFrequenciesYearly": "Yearly",
+ "kendo.scheduler.recurrenceEditorMonthlyDay": "Day",
+ "kendo.scheduler.recurrenceEditorMonthlyInterval": "month(s)",
+ "kendo.scheduler.recurrenceEditorMonthlyRepeatEvery": "Repeat every",
+ "kendo.scheduler.recurrenceEditorMonthlyRepeatOn": "Repeat on",
+ "kendo.scheduler.recurrenceEditorOffsetPositionsFirst": "First",
+ "kendo.scheduler.recurrenceEditorOffsetPositionsFourth": "Fourth",
+ "kendo.scheduler.recurrenceEditorOffsetPositionsLast": "Last",
+ "kendo.scheduler.recurrenceEditorOffsetPositionsSecond": "Second",
+ "kendo.scheduler.recurrenceEditorOffsetPositionsThird": "Third",
+ "kendo.scheduler.recurrenceEditorRepeat": "Repeat",
+ "kendo.scheduler.recurrenceEditorWeekdaysDay": "Day",
+ "kendo.scheduler.recurrenceEditorWeekdaysWeekday": "Weekday",
+ "kendo.scheduler.recurrenceEditorWeekdaysWeekendday": "Weekend Day",
+ "kendo.scheduler.recurrenceEditorWeeklyInterval": "week(s)",
+ "kendo.scheduler.recurrenceEditorWeeklyRepeatEvery": "Repeat every",
+ "kendo.scheduler.recurrenceEditorWeeklyRepeatOn": "Repeat on",
+ "kendo.scheduler.recurrenceEditorYearlyInterval": "year(s)",
+ "kendo.scheduler.recurrenceEditorYearlyOf": "of",
+ "kendo.scheduler.recurrenceEditorYearlyRepeatEvery": "Repeat every",
+ "kendo.scheduler.recurrenceEditorYearlyRepeatOn": "Repeat on",
+ "kendo.scheduler.showFullDay": "Show full day",
+ "kendo.scheduler.showWorkDay": "Show business hours",
+ "kendo.scheduler.timeHeader": "Time",
+ "kendo.scheduler.timelineMonthViewTitle": "Timeline Month",
+ "kendo.scheduler.timelineViewTitle": "Timeline",
+ "kendo.scheduler.timelineWeekViewTitle": "Timeline Week",
+ "kendo.scheduler.today": "Today",
+ "kendo.scheduler.weekViewTitle": "Week",
+ "kendo.scheduler.workWeekViewTitle": "Work Week",
+
+ // RecurrenceEditor
+ "kendo.recurrenceeditor.dailyInterval": "day(s)",
+ "kendo.recurrenceeditor.dailyRepeatEvery": "Repeat every",
+ "kendo.recurrenceeditor.endAfter": "After",
+ "kendo.recurrenceeditor.endLabel": "End",
+ "kendo.recurrenceeditor.endNever": "Never",
+ "kendo.recurrenceeditor.endOccurrence": "occurrence(s)",
+ "kendo.recurrenceeditor.endOn": "On",
+ "kendo.recurrenceeditor.frequenciesDaily": "Daily",
+ "kendo.recurrenceeditor.frequenciesMonthly": "Monthly",
+ "kendo.recurrenceeditor.frequenciesNever": "Never",
+ "kendo.recurrenceeditor.frequenciesWeekly": "Weekly",
+ "kendo.recurrenceeditor.frequenciesYearly": "Yearly",
+ "kendo.recurrenceeditor.monthlyDay": "Day",
+ "kendo.recurrenceeditor.monthlyInterval": "month(s)",
+ "kendo.recurrenceeditor.monthlyRepeatEvery": "Repeat every",
+ "kendo.recurrenceeditor.monthlyRepeatOn": "Repeat on",
+ "kendo.recurrenceeditor.offsetPositionsFourth": "Fourth",
+ "kendo.recurrenceeditor.offsetPositionsLast": "Last",
+ "kendo.recurrenceeditor.offsetPositionsSecond": "Second",
+ "kendo.recurrenceeditor.offsetPositionsThird": "Third",
+ "kendo.recurrenceeditor.repeat": "Repeat",
+ "kendo.recurrenceeditor.weekdaysDay": "Day",
+ "kendo.recurrenceeditor.weekdaysWeekday": "Weekday",
+ "kendo.recurrenceeditor.weekdaysWeekendday": "Weekend Day",
+ "kendo.recurrenceeditor.weeklyInterval": "week(s)",
+ "kendo.recurrenceeditor.weeklyRepeatEvery": "Repeat every",
+ "kendo.recurrenceeditor.weeklyRepeatOn": "Repeat on",
+ "kendo.recurrenceeditor.yearlyInterval": "year(s)",
+ "kendo.recurrenceeditor.yearlyOf": "of",
+ "kendo.recurrenceeditor.yearlyRepeatEvery": "Repeat every",
+ "kendo.recurrenceeditor.yearlyRepeatOn": "Repeat on"
+};
diff --git a/vue-options-api-demos/grid/basic/es.js b/vue-options-api-demos/grid/basic/es.js
new file mode 100644
index 00000000..ce6e3fab
--- /dev/null
+++ b/vue-options-api-demos/grid/basic/es.js
@@ -0,0 +1,122 @@
+// Custom Messages
+export const esCustomMessages = {
+ teamEfficiency: "Eficiencia del equipo",
+ teamMembers: "Miembros del equipo",
+ dashboard: "Tablero",
+ planning: "Planificación",
+ info: "Informacion",
+ profile: "Perfil",
+ language: "Idioma",
+ trend: "Tendencia",
+ volume: "Volumen",
+ myTeam: "Mi equipo",
+ allTeams: "Todos los equipos",
+ teamCalendar: "Calendario del equipo",
+ saveChanges: "Guardar cambios",
+ cancel: "Cancelar",
+ warehouse: "Almacén De Café",
+ startFreeTrial: "Iniciar prueba gratuita",
+ buyNow: "Comprar ahora",
+ getSource: "Obtenga el código fuente en GitHub",
+ demoInfo:
+ "Esta aplicación de demostración está construida utilizando los siguientes componentes de Kendo UI for Vue.",
+ firstName: "Primer nombre",
+ middleName: "Segundo nombre",
+ lastName: "Apellido",
+ email: "Dirección de correo electrónico",
+ phoneNumber: "Número de teléfono",
+ country: "País",
+ biography: "Biografía corta",
+ public: "Incluir en directorio público",
+ team: "Equipo",
+ employee: "Empleado",
+ contactName: "Nombre de contacto",
+ jobTitle: "Título del trabajo",
+ status: "Estado",
+ performance: "Rendimiento",
+ rating: "Clasificación",
+ engagement: "Compromiso",
+ budget: "Presupuesto",
+ contacts: "Contactos",
+ address: "Dirección",
+ phone: "Teléfono",
+ gridSearch: "Buscar en todas las columnas ...",
+ exportExcel: "Exportar a Excel",
+ exportPdf: "Exportar a PDF"
+};
+
+// Kendo Vue Component Messages
+export const esComponentMessages = {
+ datepicker: {
+ toggleCalendar: "Alternar calendario"
+ },
+ calendar: {
+ today: "Hoy"
+ },
+ dateinput: {
+ increment: "Incrementar valor",
+ decrement: "Disminuir valor"
+ },
+ datetimepicker: {
+ date: "Fecha",
+ time: "Hora",
+ cancel: "Cancelar",
+ set: "Establecer"
+ },
+ numerictextbox: {
+ increment: "Incrementar valor",
+ decrement: "Disminuir valor"
+ },
+ timepicker: {
+ now: "AHORA",
+ set: "Establecer",
+ cancel: "Cancelar"
+ },
+ grid: {
+ groupPanelEmpty:
+ "Arrastre el título de una columna y suéltelo aquí para agrupar por ese criterio",
+ noRecords: "No hay datos disponibles.",
+ pagerFirstPage: "Ir a la primera página",
+ pagerPreviousPage: "Ir a la página anterior",
+ pagerNextPage: "Ir a la página siguiente",
+ pagerLastPage: "Ir a la última página",
+ pagerPage: "Página",
+ pagerOf: "de",
+ pagerItems: "ítems",
+ pagerInfo: "{0} - {1} de {2} ítems",
+ pagerItemsPerPage: "ítems por página",
+ filterEqOperator: "Es igual a",
+ filterNotEqOperator: "No es igual a",
+ filterIsNullOperator: "Es nulo",
+ filterIsNotNullOperator: "No es nulo",
+ filterIsEmptyOperator: "Está vacío",
+ filterIsNotEmptyOperator: "No está vacío",
+ filterStartsWithOperator: "Comienza con",
+ filterContainsOperator: "Contiene",
+ filterNotContainsOperator: "No contiene",
+ filterEndsWithOperator: "Termina en",
+ filterGteOperator: "Es mayor o igual que",
+ filterGtOperator: "Es mayor que",
+ filterLteOperator: "Es menor o igual que",
+ filterLtOperator: "Es menor o igual que",
+ filterIsTrue: "Sí",
+ filterIsFalse: "No",
+ filterBooleanAll: "(Todas)",
+ filterAfterOrEqualOperator: "Es posterior o igual a",
+ filterAfterOperator: "Es posterior",
+ filterBeforeOperator: "Es anterior",
+ filterBeforeOrEqualOperator: "Es anterior o igual a",
+ filterSubmitButton: "Filtrar",
+ filterClearButton: "Limpiar",
+ filterAndLogic: "Y",
+ filterOrLogic: "O",
+ filterTitle: "Filtros",
+ sortAscending: "Orden ascendente",
+ sortDescending: "Orden descendente"
+ },
+ upload: {
+ cancel: "Cancelar",
+ dropFilesHere: "Arrastre los archivos aquí para subirlos",
+ select: "Seleccione..."
+ }
+};
diff --git a/vue-options-api-demos/grid/basic/fr.js b/vue-options-api-demos/grid/basic/fr.js
new file mode 100644
index 00000000..83cdcbf5
--- /dev/null
+++ b/vue-options-api-demos/grid/basic/fr.js
@@ -0,0 +1,123 @@
+// Custom Messages
+export const frCustomMessages = {
+ teamEfficiency: "Efficacité de l'équipe",
+ teamMembers: "Membres de l'équipe",
+ dashboard: "Tableau de bord",
+ planning: "Planification",
+ info: "Info",
+ profile: "Profil",
+ language: "Langue",
+ trend: "Tendance",
+ volume: "Le volume",
+ myTeam: "Mon équipe",
+ allTeams: "Toutes les équipes",
+ teamCalendar: "Calendrier d'équipe",
+ saveChanges: "Sauvegarder les modifications",
+ cancel: "Annuler",
+ warehouse: "Entrepôt De Café",
+ startFreeTrial: "Démarrer l'essai gratuit",
+ buyNow: "Acheter maintenant",
+ getSource: "Récupérer le code source sur GitHub",
+ demoInfo:
+ "Cette application de démonstration est construite à l'aide des composants Kendo UI for Vue.",
+ firstName: "Prénom",
+ middleName: "Deuxième nom",
+ lastName: "Nom de famille",
+ email: "Adresse e-mail",
+ phoneNumber: "Numéro de téléphone",
+ country: "Pays",
+ biography: "Biographie courte",
+ public: "Inclure dans le répertoire public",
+ team: "Équipe",
+ employee: "Employé",
+ contactName: "Nom du contact",
+ jobTitle: "Titre du poste",
+ status: "Statut",
+ performance: "Performance",
+ rating: "Évaluation",
+ engagement: "Engagement",
+ budget: "Budget",
+ contacts: "Contacts",
+ address: "Adresse",
+ phone: "Téléphone",
+ gridSearch: "Rechercher dans toutes les colonnes ...",
+ exportExcel: "Exporter vers Excel",
+ exportPdf: "Exporter au format PDF"
+};
+
+export const frComponentMessages = {
+ grid: {
+ groupPanelEmpty:
+ "Faites glisser un en-tête de colonne et déposez-le ici pour grouper par cette colonne",
+ pagerItemsPerPage: "éléments par page",
+ pagerInfo: "{0} - {1} sur {2} éléments",
+ pagerFirstPage: "Aller à la première page",
+ pagerPreviousPage: "Aller à la page précédente",
+ pagerNextPage: "Aller à la page suivante",
+ pagerLastPage: "Aller à la dernière page",
+ pagerPage: "Page",
+ pagerOf: "de",
+ filterClearButton: "Effacer",
+ filterEqOperator: "Est égal à",
+ filterNotEqOperator: "N'est pas égal à",
+ filterIsNullOperator: "Est nulle",
+ filterIsNotNullOperator: "Est non nulle",
+ filterIsEmptyOperator: "Est vide",
+ filterIsNotEmptyOperator: "N'est pas vide",
+ filterStartsWithOperator: "Commence par",
+ filterContainsOperator: "Contient",
+ filterNotContainsOperator: "Ne contient pas",
+ filterEndsWithOperator: "Se termine par",
+ filterGteOperator: "Est supérieur ou égal à",
+ filterGtOperator: "Est supérieur à",
+ filterLteOperator: "Est inférieur ou égal à",
+ filterLtOperator: "Est inférieur à",
+ filterIsTrue: "Est vrai",
+ filterIsFalse: "Est faux",
+ filterBooleanAll: "(Tous)",
+ filterAfterOrEqualOperator: "Est postérieur ou égal à",
+ filterAfterOperator: "Est postérieur",
+ filterBeforeOperator: "Est antérieur",
+ filterBeforeOrEqualOperator: "Est antérieur ou égal à",
+ noRecords: "Aucun enregistrement disponible."
+ },
+ dateinput: {
+ increment: "Augmenter la valeur",
+ decrement: "Diminuer la valeur"
+ },
+ calendar: {
+ today: "AUJOURD'HUI"
+ },
+ datepicker: {
+ toggleCalendar: "Basculer le calendrier"
+ },
+ dropdowns: {
+ nodata: "AUCUNE DONNÉE DISPONIBLE.",
+ clear: "Effacer"
+ },
+ numerictextbox: {
+ increment: "Augmenter la valeur",
+ decrement: "Diminuer la valeur"
+ },
+ upload: {
+ cancel: "Cancel",
+ clearSelectedFiles: "Effacer",
+ dropFilesHere: "Déposer des fichiers ici pour télécharger",
+ headerStatusUploaded: "Terminé",
+ headerStatusUploading: "Téléchargement...",
+ invalidFileExtension: "Type de fichier non autorisé.",
+ invalidFiles:
+ "Fichier(s) invalide(s). Veuillez vérifier les exigences de téléchargement de fichier.",
+ invalidMaxFileSize: "La taille du fichier est trop grande.",
+ invalidMinFileSize: "La taille du fichier est trop petite.",
+ remove: "Retirer",
+ retry: "Réessayez",
+ select: "Sélectionnez les fichiers...",
+ uploadSelectedFiles: "Télécharger",
+ total: "Total",
+ files: "fichiers"
+ },
+ sortable: {
+ noData: "Aucune donnée"
+ }
+};
diff --git a/vue-options-api-demos/grid/basic/images.js b/vue-options-api-demos/grid/basic/images.js
new file mode 100644
index 00000000..5b2915f9
--- /dev/null
+++ b/vue-options-api-demos/grid/basic/images.js
@@ -0,0 +1,79 @@
+export const images = {
+ "10F":
+ "url('data:image/jpeg;base64,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')",
+
+ "10M":
+ "url('data:image/jpeg;base64,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')",
+
+ "1F":
+ "url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5jLiBWMS4wMQD/2wCEAAUFBQgFCAwHBwwMCQkJDA0MDAwMDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0BBQgICgcKDAcHDA0MCgwNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDf/EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foRAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/AABEIAG4AZAMBEQACEQEDEQH/2gAMAwEAAhEDEQA/APsugANAHwF8VLi4s9anS4AFzK7tjrhWOV68dCMcYA55FefvJp7J6+rPXVowi47tafLQ4CxgWXJOT/ec9/YZ7fqepNN6foVFX/VnQ2nhu61ZxDZoVQ9Wx1/z7/hXNKoob6vsdsaDltou7Ohm+Gd5pq+YkZfjv1/CsvbrZpo0+r2+Fps5HUPD13EpMqkAdjyB+mK3hUi9mYyoyjujlBCyNsCj2IOD+GP6V1Lujiato0fTPwA0pUvmuwCGWJ0YsMHJOePfBGemMdOauL96xzVVaJ9dV0nCFABQAUAFABQB+dPxWvhqXie+nTkGcwJ9IcRtj6uDz7156esrd2/6+R7CjaMF1skvz/NkngzQJNdv1tEH7uHG8jpnv+XauepLlV1u9vQ76UFd3+GO/mz7B0Xw/baREEjUbgOTiuaMUtXuaVKrk7LRdDZeBXHQYquW5mpuJzt94etboHeg568CseS2qOlVHsfMXjnwgdKuHaAYT7ynGCufpzXZSqW91nLVp395HqnwBv4UkltJCTM6Ep6AAjcM+px+hHFehC1zx6qaj5Jn1HXScIUAFABQAUAQ3Mot4nlPSNGY/RQTUt2TfZFRV2l3aPzK1OY3WovKeql3PuSxJP4nBrzIK0fU9+Xx/wCFH0l8GdKFrpzXjj95OxOfb/8AXk1zVHeXktDriuWml1er+Z7cHqLkWJkfsK0T6IzkrakcjKBjIz9aTQRZx/inQ4NVtmEigtg4P4VzyvFqS0OuD5k4s8t+G1pd6PrE0tthYYoW3DAO7LDgZ+7wMkjntnBNdTruKTha/wChh9WjNuNS6jol01Z9W6bfJqVtHcx8LIuceh6EfgcivWpVFVgqi6r7ns/xPn69GWGqyoy3i7eq3T+aL1bHMFABQAUAUNWjMtlPGvLNDKoHqSjAfrWc/gkl2f5GtPScW+kl+Z+blxaEXFyxznf5SjuSCo/lXnw+GP3ntyVpS+4+n/BWrQWNlFaFJYWUAfPGyg59D0rhl7rbb+49Fe+rJWsra6Ho6Th/uc1nfsTa25yWvX/2ANLdTyRwjpHCD5jcdBjnP0wPWnG7dkW3FK9vvMLQ/GVreypHBp1w6ysVWV9rvlerNksyqM/eJx1A5Fdbi4rW36/kcSlzvRtfLTt3PS7lPNi5G3PauOXvLsdEPdZjR2w0qMSQBQ0jhSmMlwx5xxkY/l1rmlemlJb3St3udkLVW4SvZJvmvazX+Z6boNstrZRRrwMFh9GYsP0NfR4WPJRil5v723+p8tjajq4ic3vdL/wFJfoa9dh54UAFABQAHmgD418ceC30DXsIP9HvJ3nhIHGSu4J+Dpg+2D3rypr2XNF7WdvS/wCmx9DRkqqjJb3XN62X57gNI142+9bmVLgSHauUMBjwNvGNwYHOcg9sDg1knRtsatVlLR/dbv8A5Hr3g2C8WJhfFWdQMEZx057CuaKV3y7G05NJX36l++0FL+YTMSGUEDBIGDweh7jg+1NXTutAurcr1Rf0/Sk01BHCqRr6KOT9T1pvm6sj3d0i5O2cL0rN9jSK3ZWhtPtV15ZQ8RsA2DggkfKO3OSS3bbg0Rp+0nZp7O2js/L/AII5VfY0+ZNfEm1dJq3XvpbRdbnpESCJAg4CgAfgMV9HFcqUVslY+Tk+ZuT3bb+8fVEhQAUAFABQBi65oNrrsIiukDGNg8bd0cHIIPUdOR3FZVKaqKz+RvSqyoy5o/NHnxtYLTOQMqSOeoIr55pQbXY+ri3NJrqXtJnWYM6DC5IHvV03e7MqsHGy+ZPNMOUVwCOwPNNvpcIx6tFIXU1q37wbl/vD+orHmlHfVG/LCastGPe48xldOVbvUuV2mtgUeVNPdEMfjy20nVk0i6AEbJH+8H/LN5Mld/8AstwM9iRng16EMTGg4wqaRa37Pz8u/Y4HgZYqM6tFrnjd8nWSW9vPrbrY9VBBGR3r2d9UfNbaC0wCgAoAKACgAoA8Y8aRPFeOkBwJArEdME/eA+o5HuTXzuMg6c1JfDL81uv1PrcuqxnB02/eh08nez/Br5HGabrc32lNMWKeO4fcY2wvlPtGSA27hgBnawBOOM1ywg5L3Hr26/cenNRjeU9I97Npetr2+Z6Dp+k3YU3F86wouCS5ACj1wMLge7V2ww8n71R2S76Hm1cTSVoUU5yeisnv27/cinf2f9tzReRJNHawN5jMCY/PYDATbgHywTk5HzbRjK8lzUdobd3+n+ZVPnprmq2UnooLourk9deyv69jWt41tYgjdI84+nauNe6rdipNyd11Plvx/K58TyyJuZWiikZUZgxUARkZGQNuwSfMMfLmuyPJVpqM43vLlXfYygp0avtITUFGPM23otbX1t32vrsfRXw68RapDpMaawCXUkIzrsIiHCBtxBJI5zjgY69aj61HBtUIzjNK3KuZt26pcqlttZ7eh4tRfW6kpUqco/zSatG997Np2e/9WPVtL1a31WMyW7Bth2sM8q3oR7jkeo5r3YTVSKmk1fo00/xOGpTdKXJJptdmmtfNf8OadaGQUAeL6z8T5rGVodtvbMpxscvcTe+5IjGiH/ZeUMOODmuGWIUXa3yb1/C9vmfaYXh+ti4KcLuL2npGHy5vekuzUWjjZ/ipqEsiiGZiCeiQxJ9NqkTknPQFufxrkliZt+61Femv4u34H0tPhWEIOVeaulfWT5V5tpQ9T0TQvH1xLbH+1oktpk6FmKF1xgSmMjKBm64JUcjcMYrs9rJ0/aQXM+tnt8j8+rYSFLFSwsKilHmSjJNOMk9bRmvdb3VnZ3XU8l0zxG2qXFxHfshu1QBJEYFN25iEB3AYPIYHkFevNfK4j21Nwg5c8FK9730la6vrtv5an2E8JRssXgE4O3LUpyT+zflk9L2d7XVr3Wl0P0zXYNQlNs2FuEPCk9x3VgefqpyPY108kqL1X6GcZKylbRrVPs1f0ejO1t5J7hgJN5wAMMzvwP8AfJA+orb2rl3+bbJ/d09acUnrslHf0VztoE2JzxgVsrtXZ5Und6HnOueLomka0sczOhKkqG2bwCSpcKRlQCSBzxjrXNNSVnZ8vk1fttdPqXGrRg+WrUjCX966X32t+J5np1gba4uL/Vkk+13v7tAgOVjwxAyQGUMOyYbGMtk4rR1Yyth8PKEZWvJzvJp3Ssox9d3fS+hgqLrSlianM6MG7KFoqUVd35m9eiSVtXe51dvppj+zz3rXCSP8kEJXI3bSeRnhNo4Uj5R1r3cPBYaHNJUaul3GOkteruu133bZ8xmGJWKlLDYR1sLBSsqj+D3XprGV3JtpSleySfQ9Q8IRahpl20l8IljnTbti+8ZA52t2Ujy8bsfMCCcEVcMTTrQSoQcacZPRq3Le1l6XTu9TzqVGpSqSlXm5zlGK5r6Tcb3a+/bT01PVkkWQZQgj2rc7/QfQB+es1yxJYk5Jzk/X/PucV8wz+q42irLRHQ+Hs2Frca7KpPkDybQHODcyfKG65PlJlgP7xHGFbE/0l5/8D/LofO5hL6zUp4BO0X+9rW39lDaFv78rJ7e7e+6v7WI9Pu9Ni068yr2kIBZifNCjaXYODkFiCByOWAIOMnocrJKEnBx/FXu7r8vU/NMRgJ1K7xEIpxqSaSivdUnpFWt03duzfWxzOrnTNXQW1kAl0ilYfujfwMxkqSMP/eHCthugNc0VTlO60cnr538tvu/I9j6licFSdZq8Ir3ld7L1Ss/X8zy7RArtmW1lkkzxJvMTROpK7+oIAYYkBGFOAeCoP0rrYfk9jVSc4Kyv9qPRJJfF5Lffvb8sxP1vD1vrNOrbD1XdpLmlCfXmbb0/vdtD3CxfUbaFJJfKkBH+sVyAB/CXyoHsWX5c88Cvka1aNGT5VJJO1mtV6/8ABPqsJX+tRSavKyaatafnHz8le/TsYGv+Ib6YG2aRbWEcShSd7DuolBUIpHdAWPVWXvyrGSl7sYNPpf8Ayt+tvU+opZW6yUoysns1G7+Sdredzl4/F0cES6fFHH5Y+VDtG4eh2jAHueGPXg100aU6slKbfy/z6/IWJybCYODqV5c82ruDaSS733Xl56eZ2Fpd2l5i3RRdaoykptJdIvR92cYGec4I+6doOT9ZSlSy/wDeJRVR77a6d93ofl2Ppzx0XQjzQwcXZP4ZXvezXTXWzveybvsu18M6NJpi/wDE2k82RyzeYS2xck4VNx4AB2/554a0XjJfXYLkcXeVtHJL9Laea7s83DxeHX1KbbovSN7fnpu9X2e2h1CXCQR/abkDyssIcHkL2bsAWwT1wqckgbq6k1JOpSvGXKnyW0a9H3/4PW56cKL5lQkk4qTSlf4em68+i1vpvoYKeKTa3W8H5OSWX7hA7EH0GBuGMnLYGa4o4hVFz0tJQaUo9r9r7rsnZrWzXX6N4H2UH7W3K1dSf5u17N9baapO9j1e3l8+NZOm9QcfUV68XdJnzUlytpdGfAGlac2s3cdorLGHPzM7BVCjlvmP5erHoDmvmXfZbn9NYzEfVKMq7jKVtoxTbbei26d327Gj4n8RW5ntdK00B7HT5lYFR/rpCyl3xzwTlULZO0DPJJNQWyZ8rRpzjCpi6+tesnzrfkgrqMOi0td7Lmb6WPbdX0CK5LtEytIfvbdwyQOcuWccHgLt2jpx1qakFd2/r56nlYTHypqMZJqK2vZ2T291Ri9Vu73fnsectpFzY3SyNkCNgFbGCGbPBHODtDMDyrbSVLCuVRcXfsfYPFUsRRcI295NtXurLqn1XM4prSSvqky9re17pNWswI7pEZpIWAMU/BLA45DuM5bA+YKx3OCW9lxjWw8oSVpzlDlkmk1JNJO/rp0vs+5+PY/Byw1X2kHz0KUZupFJtqLV3otNNG/iaTurLQy7Txrb6mTFZBkkLbXt33I8ROMswYbQOwK7w3rk1pSwLrNUMUlCvdJPW0kk/P5u9m9LaaHkrMMNltL65hearh7OTS5U4yk9Fe3M+ijbRa83cS+8Mx6w4FtdtI+CDBDukkRuwG75B33KWUDqBnrpUwVLCvlqON12X/DL5M9LD8SVsRT9phlKnGWzlyrTrf4pX7NLX02qW/w21NmCFfskJOGlch5m9QApKp/wJg3fbjr588So+5hoN9L2svRt7eh2wqPENzqy9pLezbsr9fP11+89T8P6dp/gqIJ1DHcSTmQtjkrgZLY6qBtx1AHI5Iq0lUxD5n0S2j6Lq/Xfqdjwc8Ymqa1Ss+kLdOa9kl2e6e2uh1tpqieMZGQANbWbKZFQ5EhPKKzA4IYDLRruGOHb+E+zSre0bi3yxtbTrfbyX9anz+PwP9nwjJrmqSd430cUvitHfR6KUrX3UepNrl2JRsTmFhhlH8I7kD/aI/75VSOGrKtK81TUvZ1Y/BL7Ml/K+mv3/fYeDo8sfaOPNGWso9YyfVen5t7NHHPd2OhKLq7YC3BO0sedzcFeo+XaTnPA4HGaxV7yqOHLVvyzgtVU0unFPqt1+L1PSrXqQVFSTVrqWiVOKdm5PS68lq+iPdrDV7K+gWa1mikiYDaVdSOg44Pp2r2ueK0bSt0bs18j5F05rZNro0rp+aa0Z+erkAY7f57foB+PpXzR/UsrJf1t6fkv+AbngbQU1PVAJv8AUQI07/8AASAi+5LlfwzUV6vsKfP1W39fgfH5jKVCnKNJa1Xyry5vibfVqKb8rI9Ll8NSWMoudJleG4HVS37uQf3XBz19TkZ7dx41LHNvlqbeln/kfNttXc0rLr2/r/hz0Ww1FGgWHWrdrUqoUyY3RiR8Z+YZAULt7kDJJIxkfUUXTqLlutvnd6/lY+YrV5UZ+0w8t3tt7sbrbzlza9kumhFb+DTO8k6kGLHyfdYEdsEsvUAevX7xrbFUJSjTw9N2d0/u+a66/Iihm8Xz1qqve6d7rR/KSd1p0v2R4Vrvhp/C93HNdw3G1pC8UsK7twByY2cgsuB06qVyAxwa2qTqKclN3ShbV6ptWT21V9d9GfPzwlJxTy2MUp1Oaz0S1vKCSdr2uk2leO6N/wAPeOLDw+2y0jlO0ZkjkBRmydxwztliWJPAABPTFZc7qQg8a+Z3tGUXp6u+vr3OenlMo1pvDtW0cqdmrabK11pstrband/8LQtdcgZ7ZHiVeJMpl8DuM4jVk+8GJfIyChzWVd+z921vTqu67Ndz7bK8D7Tld7u/upuyUv5ZWvJqWziuXWz5k0eMXur33ifVRoWnlnlmcoSpLfKP4ppP4YwPmbACDqsecA8dOjOq79Pz/r7j7HG5hhsqpqMEpVbJ2taNNv8AurRPtvN9ZWPpq306DwPpsdnanKIuZGB+Z3b7z57FyNqf3QM9ENemuTkeH+GVtH18/n+l2tj8ulKvjcR9cqNzTez2XZW/litX5tJ/EeY6/wCLYNJuYnw00t2wVYYwScZALbR0VegH0Cg9uGnTq4uFTD1Y+/Tu4y6bXSv/AFpvqe3ia9HLYwqNpc+ijezetm35b36326mL4puTqWm3cV0iQ21s6vBNMWjfcTlB5RUtl1coSwUZ+bp8winh6rX1irL3tI8vbVLXrpu31Fg8zVPFQ5YSlTafPGEVJNNfZvZaNXSvtpoeXWskttGI43kjXriORlXkDkBWA565HUYOT1rodStQfs3Jq3ndWeqs+z6H6VQwGU5vTWOhRpzU9G+WUJKUXaUZx91qcXdSTV+9ypM+Bgcevb/OegrBI+iqTsu39frsjsfDfnaXbG8jVwZyQMLlRGh55xj5nzk/7FRVourFLpv1PmK2Io+1dKt9hLRNaSlrbda21v15jq9B8TFrtFuPuglnI44XJOR0OenBzzXj1MFbW2i1+78vmZVoUa9Jxw8rVHpGMtHd6aPbTfroj23+27eS2ZDtZnBLjg/M2SwKnnAzjkYwK6KdOUXGMnZN3b2133/BfI/NsZgpwU5xi3ZWirdFotVp/eevc5O5s7vT7FI9NvHgjkcsI2+YID/CpAZwobGBkgDjGOnqUMd7TEVZ1Ly9nGyt1dr9eWO19V6b7/J16M8PQhh1FpuWr1ulfS61b6X+/Ywxrd3r00vhjV40WSFM2054W4lRTkqWAAc85UEfKS2ABxrOdOtSlNybnVTkkmvc966i+2yT/wCGPWy6vLDYmHJZU6UlGone7TVpSt13bVupyS+GItOE13eRxw44Bd0U55wACep4x3PbNRiIypqhSeiSTlrbtf8AU+yo4qjN4ivBptt2ai7JK9unp6nJ313qNpAbSKJLCGcld7gCVwQM7Y/v/MDgMygdhWdWvCtNuledlbRO3zlt9x04N1HBQoqNN35vaVGoxj25Vu3pfVP0Pe/APhfT/AdiTKv+n3K7pnfHmcjIiBJ4PdueuSx2qMdyhVw8PbyavbWK2iv5V09dvuR8XWlDG4h4am3KKk7Td/fd9ajvrr9m+r00u7GHdeIRreotpyv+7jBd2GSMEcEZ4xgbVB7cnBY583EyVdQrUrqbetvL8dOnl6nvwnTyanKFePNLl0XZO/xPVXe71302SOH1HwffatrUAtWby4D5u5tvyLuBCDCZO1t2SdwP4c70swjGFad7Je4nqrytZ9t97bpbnkYnC0a86FWs43l70o6NxitrXk1+je1unokvhltZW6sL/c0r2x2OwQBmQblBIULw20gZBxkZwAaSxPtKVKd9W5Jqzs0nePq7X89DroqngJylSUXSc4NO/vR5lyzSV00tFqrq773R49oNpb28L2+qKUuIZWTDna23arLx6fMdpHG3GOK9XDVMPWpqda0nqk7/AGd19zbX4FZt9fweJaySo1h6kY1JKKvH2jvCTXa8YRv53b1bODmbHHp7Y/H+g/wrzEj9kqSt12v0/H9I/fqj1iz0/WLHTYWtZEKCNWWJlxjeN+3cV65bnLDknBrnWN9lJwaaSdk7af5n5viqdKvWnKUWm30e9tNtui6Emn3KO2zWbZrSV/m81QRlEIJPfIZ8Aff+61ezSq0qyV7a7tdl366s+ZruthnKWGneML2hLbml2/wxu9Lbokv4rnzljs5PtMDAMzr94c5OMZyQOvIxjoDXfOgqNGeKjbayfzS1Xq/wZ5lLOHWr08vrKSad5xls/dbVpNpqyT0s/iXmbul+Kmur0JMVMcIIUR8EEDurtjIbgsSPXAHT5Ktg5UsK5a81VpvbzvqlzLTXS2vc+iUcPiqzUWo+yVrTck1ez6JJ/JS0slre+m2qaZqSXEVzFvE33gQA3UkFXDfIy/eVw6sDgrz1xxGHrUKdBU24uNnZXevKtdUrp7NWeiV2zko4ClOpVqc8HFtrm5o7cz0sry07927xjY8k0XSFi1FNRlvJbqOylYJHPIXkUkYVtrMy7l3Z3AZyAexx6s5VZ1lgq8fiUZXV2mlq47JrbrZHFDDewp/XaPLKlDm10Ub2dpOzaavbq9PI9B0CS3u9Wm1TU7dIINJ2+UJGLPcSkGVXG4DJRCHGeC205xkjrc6cdKcYpR0svL9TtpLEV6fI6k5e0fxaKKuknoto3002XTZFfWvEU3jXUhb6WGKchpF6bcj7p9AevTd95uAqrvTftFKNV8sLdd9e3k/x/LjxFWllzjTw1qmKj8SWqg+8rPWa+6C07uWHd6cNG1O4Wad7S7PksrDGwjYu7IIxt3h8AkAgg12YOhh6r5NlG+6Vvx9bnzmdV8XGl7SMPaRmox0bctdrW1vpZ2T1ud1Hr95ZapETAzh0JLhwY2GD8yAYILYPGCQePavAjlkoYavyJSXtNXaLuuZWu033vbTuzhni4vGYdVKji3T0jJSVm4yurNJK1rXe70N24164vbd7mFfsVxbzw7jNtMbRu5jc7hkYCtgkgEcZGORTwUqDw9OV+SSbV9Emle34t72aemx6uDxkassRTbU0tIqN227vl0stW1ayW5jT+F7G62C+k8yWJBGHU/eQEsmcHkorCMk/3B2xXyGMqVMuxFShBLllL2kbbJTSenzv87n3WHx1X2UZ4eGkknJSTTU17st+j5eb/t658ztJyPqPT0/HoOnvX1iP1Cb6Le/lu1f8Ft5n0pF4oK7VjhG08AF+OwGRsPGO1c7km9VpdnyEsCkvenqkvs+X+JHokRgu7d/tFrC0ROzG7PCqP4TGB1JPXqa7oUYO8lHld7Jxk01b0Vj4WvSXMoqpK9nL4UtW3fXn7JLboeaQWGlWlxJe2oubd0LMUVlaM8HjY7EYzzxjOTnqa2xNeVDkwylLlb3W+9tdbbtvY58LlDrueIqyhNtK3NG1tPJX2ST12VtiCzOnRQzTiKRywwclAeepyFOM/jXTjMbzSo0ZU4tXTWrXZarrp5iwPD0sO6s6eKqK6aatF7XkrO2mvkSafc6bZwt5FmNxJG52D4yVGcOjjv6VhisQ3XpxkvdhBysrLSPNJrZ78tvI7MNlnsaFSpCo3Kc4xvJyer5Yp6Sja176blvUdd0iKyYXtjHIwTeZIo443ZV6Z2lSGyOm4rwCMdBphKjqyeNmkrX5UlqunXy9b+R5ePwjgv7OpTlyyaU7ydtdXZrV372TS013PGdc1C48crp5jP2KC8vnt2iRmJ8tEt44wz4yxCJ8x4yTnHFZ0KcHV5bWTd+9vvPWrKrgsE4YeesI67rmvzPdapN3vbWzsenm4t/hda3VzHCHiicRxxR4HGxG5ZhuyzMSxy39Bti6UZVVKlePI4rWTd209X5abJWu2fJYBTnf6zKMrxcvdglbW1u73tdvZLqUdOuE+J1ot+u6G6Ur8sgUxgqSFCsNzYBJO4rn2rnozqRxDTUVrpy6W63tbV+X4nvV6sKeHWFjDmg1d88rt3Vmr20+VvQZrdrJY3MHnOVWLGUiYlchiOC+CeeeQoOenAJcalXDUMTScr210ur6J/k7NbF/UsNmVfC4inC07uP7xRlbva2yvs9ZddLtFmze4+1S2lxIZoJly0TcqOA4IbCsWDYOTgcdKy+tynhaTd1bRWtpa66/d6Giy2nhsXOtQSvzXbaabba6KTVm7tru7ppnEeLvGL6NcxW8ats+zxkc88M6HPIycocHuME4PA4K+D9tJSm9VFL5br8z6vD4ynGMn7NLmm20kmk3a9r9Lpn/2Q==')",
+
+ "1M":
+ "url('data:image/jpeg;base64,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')",
+
+ "2F":
+ "url('data:image/jpeg;base64,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')",
+
+ "2M":
+ "url('data:image/jpeg;base64,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')",
+
+ "3F":
+ "url('data:image/jpeg;base64,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')",
+
+ "3M":
+ "url('data:image/jpeg;base64,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')",
+
+ "4F":
+ "url('data:image/jpeg;base64,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')",
+
+ "4M":
+ "url('data:image/jpeg;base64,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')",
+
+ "5F":
+ "url('data:image/jpeg;base64,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')",
+
+ "5M":
+ "url('data:image/jpeg;base64,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')",
+
+ "6F":
+ "url('data:image/jpeg;base64,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')",
+
+ "6M":
+ "url('data:image/jpeg;base64,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')",
+
+ "7F":
+ "url('data:image/jpeg;base64,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')",
+
+ "7M":
+ "url('data:image/jpeg;base64,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')",
+
+ "8F":
+ "url('data:image/jpeg;base64,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')",
+
+ "8M":
+ "url('data:image/jpeg;base64,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')",
+
+ "9F":
+ "url('data:image/jpeg;base64,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')",
+
+ "9M":
+ "url('data:image/jpeg;base64,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')",
+
+ BR:
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAtCAIAAACRYfoNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJGNTM2NzBBMEMzNTExRTY5Q0NDQkU3NkQ1MUQ1OTFCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJGNTM2NzBCMEMzNTExRTY5Q0NDQkU3NkQ1MUQ1OTFCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkY1MzY3MDgwQzM1MTFFNjlDQ0NCRTc2RDUxRDU5MUIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkY1MzY3MDkwQzM1MTFFNjlDQ0NCRTc2RDUxRDU5MUIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4SeXTsAAAKC0lEQVR42uxZ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",
+
+ DE:
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAmCAIAAAD7pgrOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjZFMUI5MDQ1MEM3MjExRTY4MTcyRDlCOEZDMDU3Rjc3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjZFMUI5MDQ2MEM3MjExRTY4MTcyRDlCOEZDMDU3Rjc3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NkUxQjkwNDMwQzcyMTFFNjgxNzJEOUI4RkMwNTdGNzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NkUxQjkwNDQwQzcyMTFFNjgxNzJEOUI4RkMwNTdGNzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6gw/inAAAAVklEQVR42uzWUQ2AMAxF0Y5MxCThDI1TMAXwCXjg74VzHZw0TVslSZL039qeDljhgH6FA7YCAAAAAABIvsR3OmAc4c/cM8MnUKclBgAAAAAAAPjaK8AAbScGyes+6bEAAAAASUVORK5CYII5OTg=",
+
+ ES:
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAArCAIAAABHOBkQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkRGRTFGQzcyMEQxRTExRTY4ODAyRUM0Q0I3OUUwQUMzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkRGRTFGQzczMEQxRTExRTY4ODAyRUM0Q0I3OUUwQUMzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6REZFMUZDNzAwRDFFMTFFNjg4MDJFQzRDQjc5RTBBQzMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6REZFMUZDNzEwRDFFMTFFNjg4MDJFQzRDQjc5RTBBQzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5CGIEmAAAD1UlEQVR42uyYy28bRRzHfzOzD7/Wie3EdtIkdkwSkTRt0iRSlJKKJqhCnJBAiAM3JLhx4QQ3uCP+A269IIGQECFItEhBrVFJBQ1NaVqTuCHOy0lsK2t7nzPDxs0BboYgY4sdzUr7mFnNZ3+v76yQ9vdBKzcMLd5cABfABXABXIAzNYFqqLUBwjNaSwMgvtziLgTGWfBrnbViEKOTqZxBXsVAaq9B/5UF/v7SOce6JaiGvF8Rf9oOzQ/kFYF5RMvpzrPmBkBQNaStY6+qiUS3pLLu14Dl9PskFG4zvQJPRhyLsCYGwHBoeDJfIfEhOgoIeMOrTVd+vNVujVF6iKovku450YMN4E0YA46Li+C4e7ytIoWMrIEqPqM6bnFcKE0w1TIfW6S7s+yRTZBqIxuXRm/VtXpG0c1vBUzghWsWeGHpLlnelAUdhQ71ShsIfnZlmA8PQ7mAbtwQB1J09BIFu5lciAL/nVoEgWGg1et+lseeLGKbHM+/3HdpjCq7WpewVV732Ytrquk3YLS5YoCDgGBwcp5yG8P3W4v+LY9u9uo9m3Lb+UlPcgZ+Xs+pHeJoLKosnp97rVO8ByzTXDGAZAjHXpXJS1YVEQ8tDsv58YAaAIEgdlDyFagSVhAxWBUFg2/7lPGT4tBEFhBhY0nK3vsECE0Xg+YRqDy0pyu9PLu3komNjJjtomLTfMaf/05SfR9qfDt8jXSkGhEG9VmAwHGOkok3yOzrz1xVcZTF8uX+uyyT7PlI969++bU9mSj45M4hs+sCD7zy3rE8YZVYY6Q6+eDNOkYxCPXD3sP24jcPUjMbBwSJx/Y5c/uOPb31bF9sdWWwuKD/tiTt3/ZiNfMF67/4ZGg6h1jzuJAMa5/jQt6feCvaPXRz5VeK44BlcnUnnUxvTkWzzK6IVWA7fOgdabd3Kvtpti+Cuib4mZTivwlgQOoKpeFZRlVmAndyKkOUknhXKSEXZL93JxLpqFQ5WGBx+cLlgeByJJh2rprGAgyUGGi5jy2L4hSAjRwd6hzURhUpIWm52AZYDAsRZLPK0dq7/YHHUhCaqZARuL/bf/2Xy05JjirGyMXN2yVsMMWMTZl4xH50x6dlRKINzukL67MLj0bC3oH3lc/afZUG6Lp6C1lA1GZ795164AEtOUbb4vqBltwVO3aK2cT0uVjxSVfPvq+Dx9dLz/cdeYQydkK4IZKuPi30NN+SU1Fx8l2FU9c63ccINYehtZOnd2xoDIDgZJh/XjnIX235Z3NKjVKjD56LtvamvvCDt7UBiJe3NID7b9QFcAFcABfg/w3whwADALA9jy2I9PhSAAAAAElFTkSuQmCCMTg5Mw==",
+
+ FR:
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAArCAIAAABHOBkQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJENDg5REJDMEM3MDExRTZBM0QzODREQzFFNDczOURFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJENDg5REJEMEM3MDExRTZBM0QzODREQzFFNDczOURFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkQ0ODlEQkEwQzcwMTFFNkEzRDM4NERDMUU0NzM5REUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkQ0ODlEQkIwQzcwMTFFNkEzRDM4NERDMUU0NzM5REUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5eKs0eAAAAZUlEQVR42uzPMQ2AQBAAwXu610EwQxCAAnrE0GAAETR4IqGABg/XfTIrYJMp0W+R7vmOfZynIT14z+te1lJr+tBF4wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTVL8AAJaAJpU7NMCAAAAAASUVORK5CYIIxMDEz",
+
+ GB:
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFERTU2NTJEMEQyRDExRTY5MUVCQTMxOUMzRTQ4OUQ4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFERTU2NTJFMEQyRDExRTY5MUVCQTMxOUMzRTQ4OUQ4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MURFNTY1MkIwRDJEMTFFNjkxRUJBMzE5QzNFNDg5RDgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MURFNTY1MkMwRDJEMTFFNjkxRUJBMzE5QzNFNDg5RDgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4LW+oDAAAIsElEQVR42sxZ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",
+
+ US:
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAiCAIAAABgN0jYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkFBOEQ0MUQxMEQyRDExRTY4NzY1OUZEN0M0RTRGNDEzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkFBOEQ0MUQyMEQyRDExRTY4NzY1OUZEN0M0RTRGNDEzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QUE4RDQxQ0YwRDJEMTFFNjg3NjU5RkQ3QzRFNEY0MTMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QUE4RDQxRDAwRDJEMTFFNjg3NjU5RkQ3QzRFNEY0MTMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6Xh7i9AAAGGElEQVR42uxX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"
+};
diff --git a/vue-options-api-demos/grid/basic/main.js b/vue-options-api-demos/grid/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/basic/main.vue b/vue-options-api-demos/grid/basic/main.vue
new file mode 100644
index 00000000..03eb1f54
--- /dev/null
+++ b/vue-options-api-demos/grid/basic/main.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/column-menu/basic/main.js b/vue-options-api-demos/grid/columns/column-menu/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/column-menu/basic/main.vue b/vue-options-api-demos/grid/columns/column-menu/basic/main.vue
new file mode 100644
index 00000000..6890f218
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/basic/main.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/column-menu/basic/products.js b/vue-options-api-demos/grid/columns/column-menu/basic/products.js
new file mode 100644
index 00000000..6387e1d9
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/basic/products.js
@@ -0,0 +1,139 @@
+const products = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }];
+
+export { products };
diff --git a/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/ColumnMenu.vue b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/ColumnMenu.vue
new file mode 100644
index 00000000..36652cb5
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/ColumnMenu.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.js b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.vue b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.vue
new file mode 100644
index 00000000..4ac4be86
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/main.vue
@@ -0,0 +1,90 @@
+
+
+
+
+ {
+ props.onClosemenu();
+ }
+ "
+ />
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/products.js b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/products.js
new file mode 100644
index 00000000..6387e1d9
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/checkboxFilter/products.js
@@ -0,0 +1,139 @@
+const products = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }];
+
+export { products };
diff --git a/vue-options-api-demos/grid/columns/column-menu/custom-style/main.js b/vue-options-api-demos/grid/columns/column-menu/custom-style/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/custom-style/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/column-menu/custom-style/main.vue b/vue-options-api-demos/grid/columns/column-menu/custom-style/main.vue
new file mode 100644
index 00000000..1822f6ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/custom-style/main.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/columns/column-menu/custom-style/products.js b/vue-options-api-demos/grid/columns/column-menu/custom-style/products.js
new file mode 100644
index 00000000..6387e1d9
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/custom-style/products.js
@@ -0,0 +1,139 @@
+const products = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }];
+
+export { products };
diff --git a/vue-options-api-demos/grid/columns/column-menu/custom-style/styles.css b/vue-options-api-demos/grid/columns/column-menu/custom-style/styles.css
new file mode 100644
index 00000000..61adda33
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/custom-style/styles.css
@@ -0,0 +1,4 @@
+th.k-header.active > div > a, th.k-header.active > div > a.k-grid-column-menu:hover {
+ color: #fff;
+ background-color: #ff6358;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/columns/column-menu/custom/ColumnMenu.vue b/vue-options-api-demos/grid/columns/column-menu/custom/ColumnMenu.vue
new file mode 100644
index 00000000..befea2bf
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/custom/ColumnMenu.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{column.title}} - {{idx}}
+
+
+
+
+
+ Reset
+ Save
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/columns/column-menu/custom/main.js b/vue-options-api-demos/grid/columns/column-menu/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/column-menu/custom/main.vue b/vue-options-api-demos/grid/columns/column-menu/custom/main.vue
new file mode 100644
index 00000000..380dc05d
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/custom/main.vue
@@ -0,0 +1,111 @@
+
+
+
+ props.onSortchange(e)"
+ @filterchange="(e) => props.onFilterchange(e)"
+ @closemenu="(e) => props.onClosemenu(e)"
+ @contentfocus="(e) => props.onContentfocus(e)"
+ @columnssubmit="onColumnsSubmit"
+ />
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/column-menu/custom/products.js b/vue-options-api-demos/grid/columns/column-menu/custom/products.js
new file mode 100644
index 00000000..6387e1d9
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/custom/products.js
@@ -0,0 +1,139 @@
+const products = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }];
+
+export { products };
diff --git a/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/ColumnMenu.vue b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/ColumnMenu.vue
new file mode 100644
index 00000000..9e59222e
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/ColumnMenu.vue
@@ -0,0 +1,118 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.js b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.vue b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.vue
new file mode 100644
index 00000000..67ade191
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/main.vue
@@ -0,0 +1,143 @@
+
+
+
+ props.onSortchange(e)"
+ @filterchange="(e) => props.onFilterchange(e)"
+ @closemenu="(e) => props.onClosemenu(e)"
+ @contentfocus="(e) => props.onContentfocus(e)"
+ @columnssubmit="onColumnsSubmit"
+ />
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/products.js b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/products.js
new file mode 100644
index 00000000..6387e1d9
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-menu/flter-only-custom-icon/products.js
@@ -0,0 +1,139 @@
+const products = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }];
+
+export { products };
diff --git a/vue-options-api-demos/grid/columns/column-virtualization/main.js b/vue-options-api-demos/grid/columns/column-virtualization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-virtualization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/column-virtualization/main.vue b/vue-options-api-demos/grid/columns/column-virtualization/main.vue
new file mode 100644
index 00000000..0f7ea5f6
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/column-virtualization/main.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/dynamic-column-generation/main.js b/vue-options-api-demos/grid/columns/dynamic-column-generation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/dynamic-column-generation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/dynamic-column-generation/main.vue b/vue-options-api-demos/grid/columns/dynamic-column-generation/main.vue
new file mode 100644
index 00000000..fa66d1ca
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/dynamic-column-generation/main.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
Loading columns from a remote service
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/headers/main.js b/vue-options-api-demos/grid/columns/headers/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/headers/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/headers/main.vue b/vue-options-api-demos/grid/columns/headers/main.vue
new file mode 100644
index 00000000..3f4d69bd
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/headers/main.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/hidden/Header.vue b/vue-options-api-demos/grid/columns/hidden/Header.vue
new file mode 100644
index 00000000..6c446a82
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/hidden/Header.vue
@@ -0,0 +1,35 @@
+
+
+
{{ title }}
+
+ Hide
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/hidden/main.js b/vue-options-api-demos/grid/columns/hidden/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/hidden/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/hidden/main.vue b/vue-options-api-demos/grid/columns/hidden/main.vue
new file mode 100644
index 00000000..cd813180
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/hidden/main.vue
@@ -0,0 +1,95 @@
+
+
+
+ Restore hidden columns
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/locked/main.js b/vue-options-api-demos/grid/columns/locked/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/locked/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/locked/main.vue b/vue-options-api-demos/grid/columns/locked/main.vue
new file mode 100644
index 00000000..4dbae164
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/locked/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/locked/products.js b/vue-options-api-demos/grid/columns/locked/products.js
new file mode 100644
index 00000000..2a1ce279
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/locked/products.js
@@ -0,0 +1,1313 @@
+const products = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+];
+
+export { products };
diff --git a/vue-options-api-demos/grid/columns/reordering/main.js b/vue-options-api-demos/grid/columns/reordering/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/reordering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/reordering/main.vue b/vue-options-api-demos/grid/columns/reordering/main.vue
new file mode 100644
index 00000000..f1eeadaf
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/reordering/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/resizing/main.js b/vue-options-api-demos/grid/columns/resizing/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/resizing/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/resizing/main.vue b/vue-options-api-demos/grid/columns/resizing/main.vue
new file mode 100644
index 00000000..8943c9aa
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/resizing/main.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.js b/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.vue b/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.vue
new file mode 100644
index 00000000..ef3ff5fc
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/main.vue
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/products.json b/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/widths/fit-smaller-screens/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/grid/columns/widths/minimum-width/main.js b/vue-options-api-demos/grid/columns/widths/minimum-width/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/widths/minimum-width/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/widths/minimum-width/main.vue b/vue-options-api-demos/grid/columns/widths/minimum-width/main.vue
new file mode 100644
index 00000000..f983ed12
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/widths/minimum-width/main.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/columns/widths/minimum-width/products.json b/vue-options-api-demos/grid/columns/widths/minimum-width/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/widths/minimum-width/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.js b/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.vue b/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.vue
new file mode 100644
index 00000000..b37a3937
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/main.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/products.json b/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/widths/percentage-no-fixed-width/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/grid/columns/widths/percentage-width/main.js b/vue-options-api-demos/grid/columns/widths/percentage-width/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/widths/percentage-width/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/columns/widths/percentage-width/main.vue b/vue-options-api-demos/grid/columns/widths/percentage-width/main.vue
new file mode 100644
index 00000000..d323f2a1
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/widths/percentage-width/main.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/columns/widths/percentage-width/products.json b/vue-options-api-demos/grid/columns/widths/percentage-width/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/grid/columns/widths/percentage-width/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/grid/common/es.json b/vue-options-api-demos/grid/common/es.json
new file mode 100644
index 00000000..72eb2b1c
--- /dev/null
+++ b/vue-options-api-demos/grid/common/es.json
@@ -0,0 +1,55 @@
+{
+ "datepicker": {
+ "toggleCalendar": "Alternar calendario"
+ },
+ "calendar": {
+ "today": "Hoy"
+ },
+ "dateinput": {
+ "increment": "Incrementar valor",
+ "decrement": "Disminuir valor"
+ },
+ "numerictextbox": {
+ "increment": "Incrementar valor",
+ "decrement": "Disminuir valor"
+ },
+ "grid": {
+ "groupPanelEmpty": "Arrastre el título de una columna y suéltelo aquí para agrupar por ese criterio",
+ "noRecords": "No hay datos disponibles.",
+ "pagerFirstPage": "Ir a la primera página",
+ "pagerPreviousPage": "Ir a la página anterior",
+ "pagerNextPage": "Ir a la página siguiente",
+ "pagerLastPage": "Ir a la última página",
+ "pagerPage": "Página",
+ "pagerOf": "de",
+ "pagerTotalPages": "{0}",
+ "pagerItems": "ítems",
+ "pagerInfo": "{0} - {1} de {2} ítems",
+ "pagerItemsPerPage": "ítems por página",
+ "filterEqOperator": "Es igual a",
+ "filterNotEqOperator": "No es igual a",
+ "filterIsNullOperator": "Es nulo",
+ "filterIsNotNullOperator": "No es nulo",
+ "filterIsEmptyOperator": "Está vacío",
+ "filterIsNotEmptyOperator": "No está vacío",
+ "filterStartsWithOperator": "Comienza con",
+ "filterContainsOperator": "Contiene",
+ "filterNotContainsOperator": "No contiene",
+ "filterEndsWithOperator": "Termina en",
+ "filterGteOperator": "Es mayor o igual que",
+ "filterGtOperator": "Es mayor que",
+ "filterLteOperator": "Es menor o igual que",
+ "filterLtOperator": "Es menor o igual que",
+ "filterIsTrue": "Sí",
+ "filterIsFalse": "No",
+ "filterBooleanAll": "(Todas)",
+ "filterAfterOrEqualOperator": "Es posterior o igual a",
+ "filterAfterOperator": "Es posterior",
+ "filterBeforeOperator": "Es anterior",
+ "filterBeforeOrEqualOperator": "Es anterior o igual a",
+ "filterFilterButton": "Filtrar",
+ "filterClearButton": "Limpiar filtros",
+ "filterAndLogic": "Y",
+ "filterOrLogic": "O"
+ }
+}
diff --git a/vue-options-api-demos/grid/common/northwind/categories.json b/vue-options-api-demos/grid/common/northwind/categories.json
new file mode 100644
index 00000000..9b40e6e0
--- /dev/null
+++ b/vue-options-api-demos/grid/common/northwind/categories.json
@@ -0,0 +1,43 @@
+
+[
+ {
+ "categoryID" : 2,
+ "description" : "Sweet and savory sauces relishes spreads and seasonings",
+ "name" : "Condiments"
+ },
+ {
+ "categoryID" : 1,
+ "description" : "Soft drinks coffees teas beers and ales",
+ "name" : "Beverages"
+ },
+ {
+ "categoryID" : 3,
+ "description" : "Desserts candies and sweet breads",
+ "name" : "Confections"
+ },
+ {
+ "categoryID" : 4,
+ "description" : "Cheeses",
+ "name" : "Dairy Products"
+ },
+ {
+ "categoryID" : 5,
+ "description" : "Breads crackers pasta and cereal",
+ "name" : "Grains/Cereals"
+ },
+ {
+ "categoryID" : 6,
+ "description" : "Prepared meats",
+ "name" : "Meat/Poultry"
+ },
+ {
+ "categoryID" : 7,
+ "description" : "Dried fruit and bean curd",
+ "name" : "Produce"
+ },
+ {
+ "categoryID" : 8,
+ "description" : "Seaweed and fish",
+ "name" : "Seafood"
+ }
+]
diff --git a/vue-options-api-demos/grid/common/northwind/customers.json b/vue-options-api-demos/grid/common/northwind/customers.json
new file mode 100644
index 00000000..ccf51582
--- /dev/null
+++ b/vue-options-api-demos/grid/common/northwind/customers.json
@@ -0,0 +1,1277 @@
+
+[
+ {
+ "customerID" : "AROUT",
+ "companyName" : "Around the Horn",
+ "contactName" : "Thomas Hardy",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "120 Hanover Sq.",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "WA1 1DP",
+ "country" : "UK",
+ "phone" : "(171) 555-7788"
+ }
+ },
+ {
+ "customerID" : "BERGS",
+ "companyName" : "Berglunds snabbköp",
+ "contactName" : "Christina Berglund",
+ "contactTitle" : "Order Administrator",
+ "address" : {
+ "street" : "Berguvsvägen 8",
+ "city" : "Luleå",
+ "region" : "NULL",
+ "postalCode" : "S-958 22",
+ "country" : "Sweden",
+ "phone" : "0921-12 34 65"
+ }
+ },
+ {
+ "customerID" : "BLAUS",
+ "companyName" : "Blauer See Delikatessen",
+ "contactName" : "Hanna Moos",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Forsterstr. 57",
+ "city" : "Mannheim",
+ "region" : "NULL",
+ "postalCode" : 68306,
+ "country" : "Germany",
+ "phone" : "0621-08460"
+ }
+ },
+ {
+ "customerID" : "BLONP",
+ "companyName" : "Blondesddsl père et fils",
+ "contactName" : "Frédérique Citeaux",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "24 place Kléber",
+ "city" : "Strasbourg",
+ "region" : "NULL",
+ "postalCode" : 67000,
+ "country" : "France",
+ "phone" : "88.60.15.31"
+ }
+ },
+ {
+ "customerID" : "BOLID",
+ "companyName" : "Bólido Comidas preparadas",
+ "contactName" : "Martín Sommer",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "67C Araquil",
+ "city" : "Madrid",
+ "region" : "NULL",
+ "postalCode" : 28023,
+ "country" : "Spain",
+ "phone" : "(91) 555 22 82"
+ }
+ },
+ {
+ "customerID" : "BONAP",
+ "companyName" : "Bon app'",
+ "contactName" : "Laurence Lebihan",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "12 rue des Bouchers",
+ "city" : "Marseille",
+ "region" : "NULL",
+ "postalCode" : 13008,
+ "country" : "France",
+ "phone" : "91.24.45.40"
+ }
+ },
+ {
+ "customerID" : "ANTON",
+ "companyName" : "Antonio Moreno Taquería",
+ "contactName" : "Antonio Moreno",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Mataderos 2312",
+ "city" : "México D.F.",
+ "region" : "NULL",
+ "postalCode" : 5023,
+ "country" : "Mexico",
+ "phone" : "(5) 555-3932"
+ }
+ },
+ {
+ "customerID" : "ANATR",
+ "companyName" : "Ana Trujillo Emparedados y helados",
+ "contactName" : "Ana Trujillo",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Avda. de la Constitución 2222",
+ "city" : "México D.F.",
+ "region" : "NULL",
+ "postalCode" : 5021,
+ "country" : "Mexico",
+ "phone" : "(5) 555-4729"
+ }
+ },
+ {
+ "customerID" : "CACTU",
+ "companyName" : "Cactus Comidas para llevar",
+ "contactName" : "Patricio Simpson",
+ "contactTitle" : "Sales Agent",
+ "address" : {
+ "street" : "Cerrito 333",
+ "city" : "Buenos Aires",
+ "region" : "NULL",
+ "postalCode" : 1010,
+ "country" : "Argentina",
+ "phone" : "(1) 135-5555"
+ }
+ },
+ {
+ "customerID" : "BSBEV",
+ "companyName" : "B's Beverages",
+ "contactName" : "Victoria Ashworth",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Fauntleroy Circus",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "EC2 5NT",
+ "country" : "UK",
+ "phone" : "(171) 555-1212"
+ }
+ },
+ {
+ "customerID" : "CENTC",
+ "companyName" : "Centro comercial Moctezuma",
+ "contactName" : "Francisco Chang",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Sierras de Granada 9993",
+ "city" : "México D.F.",
+ "region" : "NULL",
+ "postalCode" : 5022,
+ "country" : "Mexico",
+ "phone" : "(5) 555-3392"
+ }
+ },
+ {
+ "customerID" : "CHOPS",
+ "companyName" : "Chop-suey Chinese",
+ "contactName" : "Yang Wang",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Hauptstr. 29",
+ "city" : "Bern",
+ "region" : "NULL",
+ "postalCode" : 3012,
+ "country" : "Switzerland",
+ "phone" : "0452-076545"
+ }
+ },
+ {
+ "customerID" : "COMMI",
+ "companyName" : "Comércio Mineiro",
+ "contactName" : "Pedro Afonso",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "23 Av. dos Lusíadas",
+ "city" : "Sao Paulo",
+ "region" : "SP",
+ "postalCode" : "05432-043",
+ "country" : "Brazil",
+ "phone" : "(11) 555-7647"
+ }
+ },
+ {
+ "customerID" : "CONSH",
+ "companyName" : "Consolidated Holdings",
+ "contactName" : "Elizabeth Brown",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Berkeley Gardens 12 Brewery",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "WX1 6LT",
+ "country" : "UK",
+ "phone" : "(171) 555-2282"
+ }
+ },
+ {
+ "customerID" : "ALFKI",
+ "companyName" : "Alfreds Futterkiste",
+ "contactName" : "Maria Anders",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Obere Str. 57",
+ "city" : "Berlin",
+ "region" : "NULL",
+ "postalCode" : 12209,
+ "country" : "Germany",
+ "phone" : "030-0074321"
+ }
+ },
+ {
+ "customerID" : "BOTTM",
+ "companyName" : "Bottom-Dollar Markets",
+ "contactName" : "Elizabeth Lincoln",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "23 Tsawassen Blvd.",
+ "city" : "Tsawassen",
+ "region" : "BC",
+ "postalCode" : "T2F 8M4",
+ "country" : "Canada",
+ "phone" : "(604) 555-4729"
+ }
+ },
+ {
+ "customerID" : "DRACD",
+ "companyName" : "Drachenblut Delikatessen",
+ "contactName" : "Sven Ottlieb",
+ "contactTitle" : "Order Administrator",
+ "address" : {
+ "street" : "Walserweg 21",
+ "city" : "Aachen",
+ "region" : "NULL",
+ "postalCode" : 52066,
+ "country" : "Germany",
+ "phone" : "0241-039123"
+ }
+ },
+ {
+ "customerID" : "DUMON",
+ "companyName" : "Du monde entier",
+ "contactName" : "Janine Labrune",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "67 rue des Cinquante Otages",
+ "city" : "Nantes",
+ "region" : "NULL",
+ "postalCode" : 44000,
+ "country" : "France",
+ "phone" : "40.67.88.88"
+ }
+ },
+ {
+ "customerID" : "FAMIA",
+ "companyName" : "Familia Arquibaldo",
+ "contactName" : "Aria Cruz",
+ "contactTitle" : "Marketing Assistant",
+ "address" : {
+ "street" : "Rua Orós 92",
+ "city" : "Sao Paulo",
+ "region" : "SP",
+ "postalCode" : "05442-030",
+ "country" : "Brazil",
+ "phone" : "(11) 555-9857"
+ }
+ },
+ {
+ "customerID" : "FISSA",
+ "companyName" : "FISSA Fabrica Inter. Salchichas S.A.",
+ "contactName" : "Diego Roel",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "C/ Moralzarzal 86",
+ "city" : "Madrid",
+ "region" : "NULL",
+ "postalCode" : 28034,
+ "country" : "Spain",
+ "phone" : "(91) 555 94 44"
+ }
+ },
+ {
+ "customerID" : "FOLIG",
+ "companyName" : "Folies gourmandes",
+ "contactName" : "Martine Rancé",
+ "contactTitle" : "Assistant Sales Agent",
+ "address" : {
+ "street" : "184 chaussée de Tournai",
+ "city" : "Lille",
+ "region" : "NULL",
+ "postalCode" : 59000,
+ "country" : "France",
+ "phone" : "20.16.10.16"
+ }
+ },
+ {
+ "customerID" : "FOLKO",
+ "companyName" : "Folk och fä HB",
+ "contactName" : "Maria Larsson",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Åkergatan 24",
+ "city" : "Bräcke",
+ "region" : "NULL",
+ "postalCode" : "S-844 67",
+ "country" : "Sweden",
+ "phone" : "0695-34 67 21"
+ }
+ },
+ {
+ "customerID" : "FRANK",
+ "companyName" : "Frankenversand",
+ "contactName" : "Peter Franken",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Berliner Platz 43",
+ "city" : "München",
+ "region" : "NULL",
+ "postalCode" : 80805,
+ "country" : "Germany",
+ "phone" : "089-0877310"
+ }
+ },
+ {
+ "customerID" : "FRANR",
+ "companyName" : "France restauration",
+ "contactName" : "Carine Schmitt",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "54 rue Royale",
+ "city" : "Nantes",
+ "region" : "NULL",
+ "postalCode" : 44000,
+ "country" : "France",
+ "phone" : "40.32.21.21"
+ }
+ },
+ {
+ "customerID" : "EASTC",
+ "companyName" : "Eastern Connection",
+ "contactName" : "Ann Devon",
+ "contactTitle" : "Sales Agent",
+ "address" : {
+ "street" : "35 King George",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "WX3 6FW",
+ "country" : "UK",
+ "phone" : "(171) 555-0297"
+ }
+ },
+ {
+ "customerID" : "ERNSH",
+ "companyName" : "Ernst Handel",
+ "contactName" : "Roland Mendel",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Kirchgasse 6",
+ "city" : "Graz",
+ "region" : "NULL",
+ "postalCode" : 8010,
+ "country" : "Austria",
+ "phone" : "7675-3425"
+ }
+ },
+ {
+ "customerID" : "FRANS",
+ "companyName" : "Franchi S.p.A.",
+ "contactName" : "Paolo Accorti",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Via Monte Bianco 34",
+ "city" : "Torino",
+ "region" : "NULL",
+ "postalCode" : 10100,
+ "country" : "Italy",
+ "phone" : "011-4988260"
+ }
+ },
+ {
+ "customerID" : "FURIB",
+ "companyName" : "Furia Bacalhau e Frutos do Mar",
+ "contactName" : "Lino Rodriguez",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Jardim das rosas n. 32",
+ "city" : "Lisboa",
+ "region" : "NULL",
+ "postalCode" : 1675,
+ "country" : "Portugal",
+ "phone" : "(1) 354-2534"
+ }
+ },
+ {
+ "customerID" : "GALED",
+ "companyName" : "Galería del gastrónomo",
+ "contactName" : "Eduardo Saavedra",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Rambla de Cataluña 23",
+ "city" : "Barcelona",
+ "region" : "NULL",
+ "postalCode" : 8022,
+ "country" : "Spain",
+ "phone" : "(93) 203 4560"
+ }
+ },
+ {
+ "customerID" : "GODOS",
+ "companyName" : "Godos Cocina Típica",
+ "contactName" : "José Pedro Freyre",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "C/ Romero 33",
+ "city" : "Sevilla",
+ "region" : "NULL",
+ "postalCode" : 41101,
+ "country" : "Spain",
+ "phone" : "(95) 555 82 82"
+ }
+ },
+ {
+ "customerID" : "GOURL",
+ "companyName" : "Gourmet Lanchonetes",
+ "contactName" : "André Fonseca",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "Av. Brasil 442",
+ "city" : "Campinas",
+ "region" : "SP",
+ "postalCode" : "04876-786",
+ "country" : "Brazil",
+ "phone" : "(11) 555-9482"
+ }
+ },
+ {
+ "customerID" : "HILAA",
+ "companyName" : "HILARION-Abastos",
+ "contactName" : "Carlos Hernández",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city" : "San Cristóbal",
+ "region" : "Táchira",
+ "postalCode" : 5022,
+ "country" : "Venezuela",
+ "phone" : "(5) 555-1340"
+ }
+ },
+ {
+ "customerID" : "HUNGC",
+ "companyName" : "Hungry Coyote Import Store",
+ "contactName" : "Yoshi Latimer",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "City Center Plaza 516 Main St.",
+ "city" : "Elgin",
+ "region" : "OR",
+ "postalCode" : 97827,
+ "country" : "USA",
+ "phone" : "(503) 555-6874"
+ }
+ },
+ {
+ "customerID" : "HUNGO",
+ "companyName" : "Hungry Owl All-Night Grocers",
+ "contactName" : "Patricia McKenna",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "8 Johnstown Road",
+ "city" : "Cork",
+ "region" : "Co. Cork",
+ "postalCode" : "NULL",
+ "country" : "Ireland",
+ "phone" : "2967 542"
+ }
+ },
+ {
+ "customerID" : "ISLAT",
+ "companyName" : "Island Trading",
+ "contactName" : "Helen Bennett",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Garden House Crowther Way",
+ "city" : "Cowes",
+ "region" : "Isle of Wight",
+ "postalCode" : "PO31 7PJ",
+ "country" : "UK",
+ "phone" : "(198) 555-8888"
+ }
+ },
+ {
+ "customerID" : "KOENE",
+ "companyName" : "Königlich Essen",
+ "contactName" : "Philip Cramer",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "Maubelstr. 90",
+ "city" : "Brandenburg",
+ "region" : "NULL",
+ "postalCode" : 14776,
+ "country" : "Germany",
+ "phone" : "0555-09876"
+ }
+ },
+ {
+ "customerID" : "LACOR",
+ "companyName" : "La corne d'abondance",
+ "contactName" : "Daniel Tonini",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "67 avenue de l'Europe",
+ "city" : "Versailles",
+ "region" : "NULL",
+ "postalCode" : 78000,
+ "country" : "France",
+ "phone" : "30.59.84.10"
+ }
+ },
+ {
+ "customerID" : "GROSR",
+ "companyName" : "GROSELLA-Restaurante",
+ "contactName" : "Manuel Pereira",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "5ª Ave. Los Palos Grandes",
+ "city" : "Caracas",
+ "region" : "DF",
+ "postalCode" : 1081,
+ "country" : "Venezuela",
+ "phone" : "(2) 283-2951"
+ }
+ },
+ {
+ "customerID" : "HANAR",
+ "companyName" : "Hanari Carnes",
+ "contactName" : "Mario Pontes",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Rua do Paço 67",
+ "city" : "Rio de Janeiro",
+ "region" : "RJ",
+ "postalCode" : "05454-876",
+ "country" : "Brazil",
+ "phone" : "(21) 555-0091"
+ }
+ },
+ {
+ "customerID" : "LAUGB",
+ "companyName" : "Laughing Bacchus Wine Cellars",
+ "contactName" : "Yoshi Tannamuri",
+ "contactTitle" : "Marketing Assistant",
+ "address" : {
+ "street" : "1900 Oak St.",
+ "city" : "Vancouver",
+ "region" : "BC",
+ "postalCode" : "V3F 2K1",
+ "country" : "Canada",
+ "phone" : "(604) 555-3392"
+ }
+ },
+ {
+ "customerID" : "LAZYK",
+ "companyName" : "Lazy K Kountry Store",
+ "contactName" : "John Steel",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "12 Orchestra Terrace",
+ "city" : "Walla Walla",
+ "region" : "WA",
+ "postalCode" : 99362,
+ "country" : "USA",
+ "phone" : "(509) 555-7969"
+ }
+ },
+ {
+ "customerID" : "LEHMS",
+ "companyName" : "Lehmanns Marktstand",
+ "contactName" : "Renate Messner",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Magazinweg 7",
+ "city" : "Frankfurt a.M.",
+ "region" : "NULL",
+ "postalCode" : 60528,
+ "country" : "Germany",
+ "phone" : "069-0245984"
+ }
+ },
+ {
+ "customerID" : "GREAL",
+ "companyName" : "Great Lakes Food Market",
+ "contactName" : "Howard Snyder",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "2732 Baker Blvd.",
+ "city" : "Eugene",
+ "region" : "OR",
+ "postalCode" : 97403,
+ "country" : "USA",
+ "phone" : "(503) 555-7555"
+ }
+ },
+ {
+ "customerID" : "LAMAI",
+ "companyName" : "La maison d'Asie",
+ "contactName" : "Annette Roulet",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "1 rue Alsace-Lorraine",
+ "city" : "Toulouse",
+ "region" : "NULL",
+ "postalCode" : 31000,
+ "country" : "France",
+ "phone" : "61.77.61.10"
+ }
+ },
+ {
+ "customerID" : "LETSS",
+ "companyName" : "Let's Stop N Shop",
+ "contactName" : "Jaime Yorres",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "87 Polk St. Suite 5",
+ "city" : "San Francisco",
+ "region" : "CA",
+ "postalCode" : 94117,
+ "country" : "USA",
+ "phone" : "(415) 555-5938"
+ }
+ },
+ {
+ "customerID" : "MAGAA",
+ "companyName" : "Magazzini Alimentari Riuniti",
+ "contactName" : "Giovanni Rovelli",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Via Ludovico il Moro 22",
+ "city" : "Bergamo",
+ "region" : "NULL",
+ "postalCode" : 24100,
+ "country" : "Italy",
+ "phone" : "035-640230"
+ }
+ },
+ {
+ "customerID" : "MAISD",
+ "companyName" : "Maison Dewey",
+ "contactName" : "Catherine Dewey",
+ "contactTitle" : "Sales Agent",
+ "address" : {
+ "street" : "Rue Joseph-Bens 532",
+ "city" : "Bruxelles",
+ "region" : "NULL",
+ "postalCode" : "B-1180",
+ "country" : "Belgium",
+ "phone" : "(02) 201 24 67"
+ }
+ },
+ {
+ "customerID" : "MEREP",
+ "companyName" : "Mère Paillarde",
+ "contactName" : "Jean Fresnière",
+ "contactTitle" : "Marketing Assistant",
+ "address" : {
+ "street" : "43 rue St. Laurent",
+ "city" : "Montréal",
+ "region" : "Québec",
+ "postalCode" : "H1J 1C3",
+ "country" : "Canada",
+ "phone" : "(514) 555-8054"
+ }
+ },
+ {
+ "customerID" : "MORGK",
+ "companyName" : "Morgenstern Gesundkost",
+ "contactName" : "Alexander Feuer",
+ "contactTitle" : "Marketing Assistant",
+ "address" : {
+ "street" : "Heerstr. 22",
+ "city" : "Leipzig",
+ "region" : "NULL",
+ "postalCode" : 4179,
+ "country" : "Germany",
+ "phone" : "0342-023176"
+ }
+ },
+ {
+ "customerID" : "NORTS",
+ "companyName" : "North/South",
+ "contactName" : "Simon Crowther",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "South House 300 Queensbridge",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "SW7 1RZ",
+ "country" : "UK",
+ "phone" : "(171) 555-7733"
+ }
+ },
+ {
+ "customerID" : "OCEAN",
+ "companyName" : "Océano Atlántico Ltda.",
+ "contactName" : "Yvonne Moncada",
+ "contactTitle" : "Sales Agent",
+ "address" : {
+ "street" : "Ing. Gustavo Moncada 8585 Piso 20-A",
+ "city" : "Buenos Aires",
+ "region" : "NULL",
+ "postalCode" : 1010,
+ "country" : "Argentina",
+ "phone" : "(1) 135-5333"
+ }
+ },
+ {
+ "customerID" : "LINOD",
+ "companyName" : "LINO-Delicateses",
+ "contactName" : "Felipe Izquierdo",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Ave. 5 de Mayo Porlamar",
+ "city" : "I. de Margarita",
+ "region" : "Nueva Esparta",
+ "postalCode" : 4980,
+ "country" : "Venezuela",
+ "phone" : "(8) 34-56-12"
+ }
+ },
+ {
+ "customerID" : "LILAS",
+ "companyName" : "LILA-Supermercado",
+ "contactName" : "Carlos González",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city" : "Barquisimeto",
+ "region" : "Lara",
+ "postalCode" : 3508,
+ "country" : "Venezuela",
+ "phone" : "(9) 331-6954"
+ }
+ },
+ {
+ "customerID" : "OLDWO",
+ "companyName" : "Old World Delicatessen",
+ "contactName" : "Rene Phillips",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "2743 Bering St.",
+ "city" : "Anchorage",
+ "region" : "AK",
+ "postalCode" : 99508,
+ "country" : "USA",
+ "phone" : "(907) 555-7584"
+ }
+ },
+ {
+ "customerID" : "OTTIK",
+ "companyName" : "Ottilies Käseladen",
+ "contactName" : "Henriette Pfalzheim",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Mehrheimerstr. 369",
+ "city" : "Köln",
+ "region" : "NULL",
+ "postalCode" : 50739,
+ "country" : "Germany",
+ "phone" : "0221-0644327"
+ }
+ },
+ {
+ "customerID" : "PICCO",
+ "companyName" : "Piccolo und mehr",
+ "contactName" : "Georg Pipps",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Geislweg 14",
+ "city" : "Salzburg",
+ "region" : "NULL",
+ "postalCode" : 5020,
+ "country" : "Austria",
+ "phone" : "6562-9722"
+ }
+ },
+ {
+ "customerID" : "PARIS",
+ "companyName" : "Paris spécialités",
+ "contactName" : "Marie Bertrand",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "265 boulevard Charonne",
+ "city" : "Paris",
+ "region" : "NULL",
+ "postalCode" : 75012,
+ "country" : "France",
+ "phone" : "(1) 42.34.22.66"
+ }
+ },
+ {
+ "customerID" : "PERIC",
+ "companyName" : "Pericles Comidas clásicas",
+ "contactName" : "Guillermo Fernández",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Calle Dr. Jorge Cash 321",
+ "city" : "México D.F.",
+ "region" : "NULL",
+ "postalCode" : 5033,
+ "country" : "Mexico",
+ "phone" : "(5) 552-3745"
+ }
+ },
+ {
+ "customerID" : "PRINI",
+ "companyName" : "Princesa Isabel Vinhos",
+ "contactName" : "Isabel de Castro",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Estrada da saúde n. 58",
+ "city" : "Lisboa",
+ "region" : "NULL",
+ "postalCode" : 1756,
+ "country" : "Portugal",
+ "phone" : "(1) 356-5634"
+ }
+ },
+ {
+ "customerID" : "LONEP",
+ "companyName" : "Lonesome Pine Restaurant",
+ "contactName" : "Fran Wilson",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "89 Chiaroscuro Rd.",
+ "city" : "Portland",
+ "region" : "OR",
+ "postalCode" : 97219,
+ "country" : "USA",
+ "phone" : "(503) 555-9573"
+ }
+ },
+ {
+ "customerID" : "QUEEN",
+ "companyName" : "Queen Cozinha",
+ "contactName" : "Lúcia Carvalho",
+ "contactTitle" : "Marketing Assistant",
+ "address" : {
+ "street" : "Alameda dos Canàrios 891",
+ "city" : "Sao Paulo",
+ "region" : "SP",
+ "postalCode" : "05487-020",
+ "country" : "Brazil",
+ "phone" : "(11) 555-1189"
+ }
+ },
+ {
+ "customerID" : "RATTC",
+ "companyName" : "Rattlesnake Canyon Grocery",
+ "contactName" : "Paula Wilson",
+ "contactTitle" : "Assistant Sales Representative",
+ "address" : {
+ "street" : "2817 Milton Dr.",
+ "city" : "Albuquerque",
+ "region" : "NM",
+ "postalCode" : 87110,
+ "country" : "USA",
+ "phone" : "(505) 555-5939"
+ }
+ },
+ {
+ "customerID" : "REGGC",
+ "companyName" : "Reggiani Caseifici",
+ "contactName" : "Maurizio Moroni",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "Strada Provinciale 124",
+ "city" : "Reggio Emilia",
+ "region" : "NULL",
+ "postalCode" : 42100,
+ "country" : "Italy",
+ "phone" : "0522-556721"
+ }
+ },
+ {
+ "customerID" : "QUEDE",
+ "companyName" : "Que Delícia",
+ "contactName" : "Bernardo Batista",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Rua da Panificadora",
+ "city" : "12Rio de Janeiro",
+ "region" : "RJ",
+ "postalCode" : "02389-673",
+ "country" : "Brazil",
+ "phone" : "(21) 555-4252"
+ }
+ },
+ {
+ "customerID" : "RANCH",
+ "companyName" : "Rancho grande",
+ "contactName" : "Sergio Gutiérrez",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Av. del Libertador 900",
+ "city" : "Buenos Aires",
+ "region" : "NULL",
+ "postalCode" : 1010,
+ "country" : "Argentina",
+ "phone" : "(1) 123-5555"
+ }
+ },
+ {
+ "customerID" : "ROMEY",
+ "companyName" : "Romero y tomillo",
+ "contactName" : "Alejandra Camino",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Gran Vía 1",
+ "city" : "Madrid",
+ "region" : "NULL",
+ "postalCode" : 28001,
+ "country" : "Spain",
+ "phone" : "(91) 745 6200"
+ }
+ },
+ {
+ "customerID" : "QUICK",
+ "companyName" : "QUICK-Stop",
+ "contactName" : "Horst Kloss",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Taucherstraße 10",
+ "city" : "Cunewalde",
+ "region" : "NULL",
+ "postalCode" : 1307,
+ "country" : "Germany",
+ "phone" : "0372-035188"
+ }
+ },
+ {
+ "customerID" : "RICAR",
+ "companyName" : "Ricardo Adocicados",
+ "contactName" : "Janete Limeira",
+ "contactTitle" : "Assistant Sales Agent",
+ "address" : {
+ "street" : "Av. Copacabana 267",
+ "city" : "Rio de Janeiro",
+ "region" : "RJ",
+ "postalCode" : "02389-890",
+ "country" : "Brazil",
+ "phone" : "(21) 555-3412"
+ }
+ },
+ {
+ "customerID" : "RICSU",
+ "companyName" : "Richter Supermarkt",
+ "contactName" : "Michael Holz",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Grenzacherweg 237",
+ "city" : "Genève",
+ "region" : "NULL",
+ "postalCode" : 1203,
+ "country" : "Switzerland",
+ "phone" : "0897-034214"
+ }
+ },
+ {
+ "customerID" : "SANTG",
+ "companyName" : "Santé Gourmet",
+ "contactName" : "Jonas Bergulfsen",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Erling Skakkes gate 78",
+ "city" : "Stavern",
+ "region" : "NULL",
+ "postalCode" : 4110,
+ "country" : "Norway",
+ "phone" : "07-98 92 35"
+ }
+ },
+ {
+ "customerID" : "SAVEA",
+ "companyName" : "Save-a-lot Markets",
+ "contactName" : "Jose Pavarotti",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "187 Suffolk Ln.",
+ "city" : "Boise",
+ "region" : "ID",
+ "postalCode" : 83720,
+ "country" : "USA",
+ "phone" : "(208) 555-8097"
+ }
+ },
+ {
+ "customerID" : "SEVES",
+ "companyName" : "Seven Seas Imports",
+ "contactName" : "Hari Kumar",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "90 Wadhurst Rd.",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "OX15 4NB",
+ "country" : "UK",
+ "phone" : "(171) 555-1717"
+ }
+ },
+ {
+ "customerID" : "SIMOB",
+ "companyName" : "Simons bistro",
+ "contactName" : "Jytte Petersen",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Vinbæltet 34",
+ "city" : "Kobenhavn",
+ "region" : "NULL",
+ "postalCode" : 1734,
+ "country" : "Denmark",
+ "phone" : "31 12 34 56"
+ }
+ },
+ {
+ "customerID" : "SPECD",
+ "companyName" : "Spécialités du monde",
+ "contactName" : "Dominique Perrier",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "25 rue Lauriston",
+ "city" : "Paris",
+ "region" : "NULL",
+ "postalCode" : 75016,
+ "country" : "France",
+ "phone" : "(1) 47.55.60.10"
+ }
+ },
+ {
+ "customerID" : "SPLIR",
+ "companyName" : "Split Rail Beer & Ale",
+ "contactName" : "Art Braunschweiger",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "P.O. Box 555",
+ "city" : "Lander",
+ "region" : "WY",
+ "postalCode" : 82520,
+ "country" : "USA",
+ "phone" : "(307) 555-4680"
+ }
+ },
+ {
+ "customerID" : "SUPRD",
+ "companyName" : "Suprêmes délices",
+ "contactName" : "Pascale Cartrain",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Boulevard Tirou 255",
+ "city" : "Charleroi",
+ "region" : "NULL",
+ "postalCode" : "B-6000",
+ "country" : "Belgium",
+ "phone" : "(071) 23 67 22 20"
+ }
+ },
+ {
+ "customerID" : "THEBI",
+ "companyName" : "The Big Cheese",
+ "contactName" : "Liz Nixon",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "89 Jefferson Way Suite 2",
+ "city" : "Portland",
+ "region" : "OR",
+ "postalCode" : 97201,
+ "country" : "USA",
+ "phone" : "(503) 555-3612"
+ }
+ },
+ {
+ "customerID" : "THECR",
+ "companyName" : "The Cracker Box",
+ "contactName" : "Liu Wong",
+ "contactTitle" : "Marketing Assistant",
+ "address" : {
+ "street" : "55 Grizzly Peak Rd.",
+ "city" : "Butte",
+ "region" : "MT",
+ "postalCode" : 59801,
+ "country" : "USA",
+ "phone" : "(406) 555-5834"
+ }
+ },
+ {
+ "customerID" : "TOMSP",
+ "companyName" : "Toms Spezialitäten",
+ "contactName" : "Karin Josephs",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Luisenstr. 48",
+ "city" : "Münster",
+ "region" : "NULL",
+ "postalCode" : 44087,
+ "country" : "Germany",
+ "phone" : "0251-031259"
+ }
+ },
+ {
+ "customerID" : "TORTU",
+ "companyName" : "Tortuga Restaurante",
+ "contactName" : "Miguel Angel Paolino",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Avda. Azteca 123",
+ "city" : "México D.F.",
+ "region" : "NULL",
+ "postalCode" : 5033,
+ "country" : "Mexico",
+ "phone" : "(5) 555-2933"
+ }
+ },
+ {
+ "customerID" : "TRADH",
+ "companyName" : "Tradição Hipermercados",
+ "contactName" : "Anabela Domingues",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Av. Inês de Castro 414",
+ "city" : "Sao Paulo",
+ "region" : "SP",
+ "postalCode" : "05634-030",
+ "country" : "Brazil",
+ "phone" : "(11) 555-2167"
+ }
+ },
+ {
+ "customerID" : "TRAIH",
+ "companyName" : "Trail's Head Gourmet Provisioners",
+ "contactName" : "Helvetius Nagy",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "722 DaVinci Blvd.",
+ "city" : "Kirkland",
+ "region" : "WA",
+ "postalCode" : 98034,
+ "country" : "USA",
+ "phone" : "(206) 555-8257"
+ }
+ },
+ {
+ "customerID" : "VAFFE",
+ "companyName" : "Vaffeljernet",
+ "contactName" : "Palle Ibsen",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Smagsloget 45",
+ "city" : "Århus",
+ "region" : "NULL",
+ "postalCode" : 8200,
+ "country" : "Denmark",
+ "phone" : "86 21 32 43"
+ }
+ },
+ {
+ "customerID" : "VICTE",
+ "companyName" : "Victuailles en stock",
+ "contactName" : "Mary Saveley",
+ "contactTitle" : "Sales Agent",
+ "address" : {
+ "street" : "2 rue du Commerce",
+ "city" : "Lyon",
+ "region" : "NULL",
+ "postalCode" : 69004,
+ "country" : "France",
+ "phone" : "78.32.54.86"
+ }
+ },
+ {
+ "customerID" : "VINET",
+ "companyName" : "Vins et alcools Chevalier",
+ "contactName" : "Paul Henriot",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "59 rue de l'Abbaye",
+ "city" : "Reims",
+ "region" : "NULL",
+ "postalCode" : 51100,
+ "country" : "France",
+ "phone" : "26.47.15.10"
+ }
+ },
+ {
+ "customerID" : "WANDK",
+ "companyName" : "Die Wandernde Kuh",
+ "contactName" : "Rita Müller",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Adenauerallee 900",
+ "city" : "Stuttgart",
+ "region" : "NULL",
+ "postalCode" : 70563,
+ "country" : "Germany",
+ "phone" : "0711-020361"
+ }
+ },
+ {
+ "customerID" : "WARTH",
+ "companyName" : "Wartian Herkku",
+ "contactName" : "Pirkko Koskitalo",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Torikatu 38",
+ "city" : "Oulu",
+ "region" : "NULL",
+ "postalCode" : 90110,
+ "country" : "Finland",
+ "phone" : "981-443655"
+ }
+ },
+ {
+ "customerID" : "WELLI",
+ "companyName" : "Wellington Importadora",
+ "contactName" : "Paula Parente",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Rua do Mercado 12",
+ "city" : "Resende",
+ "region" : "SP",
+ "postalCode" : "08737-363",
+ "country" : "Brazil",
+ "phone" : "(14) 555-8122"
+ }
+ },
+ {
+ "customerID" : "WHITC",
+ "companyName" : "White Clover Markets",
+ "contactName" : "Karl Jablonski",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "305 - 14th Ave. S. Suite 3B",
+ "city" : "Seattle",
+ "region" : "WA",
+ "postalCode" : 98128,
+ "country" : "USA",
+ "phone" : "(206) 555-4112"
+ }
+ },
+ {
+ "customerID" : "WILMK",
+ "companyName" : "Wilman Kala",
+ "contactName" : "Matti Karttunen",
+ "contactTitle" : "Owner/Marketing Assistant",
+ "address" : {
+ "street" : "Keskuskatu 45",
+ "city" : "Helsinki",
+ "region" : "NULL",
+ "postalCode" : 21240,
+ "country" : "Finland",
+ "phone" : "90-224 8858"
+ }
+ },
+ {
+ "customerID" : "WOLZA",
+ "companyName" : "Wolski Zajazd",
+ "contactName" : "Zbyszek Piestrzeniewicz",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "ul. Filtrowa 68",
+ "city" : "Warszawa",
+ "region" : "NULL",
+ "postalCode" : "01-012",
+ "country" : "Poland",
+ "phone" : "(26) 642-7012"
+ }
+ }
+]
diff --git a/vue-options-api-demos/grid/common/northwind/employees.json b/vue-options-api-demos/grid/common/northwind/employees.json
new file mode 100644
index 00000000..ca4d4a8b
--- /dev/null
+++ b/vue-options-api-demos/grid/common/northwind/employees.json
@@ -0,0 +1,241 @@
+
+[
+ {
+ "employeeID" : 2,
+ "lastName" : "Fuller",
+ "firstName" : "Andrew",
+ "title" : "Vice President Sales",
+ "titleOfCourtesy" : "Dr.",
+ "birthDate" : "1952-02-19 00:00:00.000",
+ "hireDate" : "1992-08-14 00:00:00.000",
+ "address" : {
+ "street" : "908 W. Capital Way",
+ "city" : "Tacoma",
+ "region" : "WA",
+ "postalCode" : 98401,
+ "country" : "USA",
+ "phone" : "(206) 555-9482"
+ },
+ "notes" : "Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of Dallas in 1981. He is fluent in French and Italian and reads German. He joined the company as a sales representative was promoted to sales manager",
+ "reportsTo" : "NULL",
+ "territoryIDs" : [
+ 1730,
+ 1833,
+ 2116,
+ 2139,
+ 2184,
+ 40222,
+ 1581
+ ]
+ },
+ {
+ "employeeID" : 5,
+ "lastName" : "Buchanan",
+ "firstName" : "Steven",
+ "title" : "Sales Manager",
+ "titleOfCourtesy" : "Mr.",
+ "birthDate" : "1955-03-04 00:00:00.000",
+ "hireDate" : "1993-10-17 00:00:00.000",
+ "address" : {
+ "street" : "14 Garrett Hill",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "SW1 8JR",
+ "country" : "UK",
+ "phone" : "(71) 555-4848"
+ },
+ "notes" : "Steven Buchanan graduated from St. Andrews University in Scotland with a BSC degree in 1976. Upon joining the company as a sales representative in 1992 he spent 6 months in an orientation program at the Seattle office.",
+ "reportsTo" : 2,
+ "territoryIDs" : [
+ 2903,
+ 7960,
+ 8837,
+ 10019,
+ 10038,
+ 11747,
+ 14450
+ ]
+ },
+ {
+ "employeeID" : 1,
+ "lastName" : "Davolio",
+ "firstName" : "Nancy",
+ "title" : "Sales Representative",
+ "titleOfCourtesy" : "Ms.",
+ "birthDate" : "1948-12-08 00:00:00.000",
+ "hireDate" : "1992-05-01 00:00:00.000",
+ "address" : {
+ "street" : "507 20th Ave. E. Apt. 2A",
+ "city" : "Seattle",
+ "region" : "WA",
+ "postalCode" : 98122,
+ "country" : "USA",
+ "phone" : "(206) 555-9857"
+ },
+ "notes" : "Education includes a BA in psychology from Colorado State University in 1970. She also completed The Art of the Cold Call. Nancy is a member of Toastmasters International.",
+ "reportsTo" : 2,
+ "territoryIDs" : [
+ 6897,
+ 19713
+ ]
+ },
+ {
+ "employeeID" : 3,
+ "lastName" : "Leverling",
+ "firstName" : "Janet",
+ "title" : "Sales Representative",
+ "titleOfCourtesy" : "Ms.",
+ "birthDate" : "1963-08-30 00:00:00.000",
+ "hireDate" : "1992-04-01 00:00:00.000",
+ "address" : {
+ "street" : "722 Moss Bay Blvd.",
+ "city" : "Kirkland",
+ "region" : "WA",
+ "postalCode" : 98033,
+ "country" : "USA",
+ "phone" : "(206) 555-3412"
+ },
+ "notes" : "Janet has a BS degree in chemistry from Boston College (1984). She has also completed a certificate program in food retailing management. Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.",
+ "reportsTo" : 2,
+ "territoryIDs" : [
+ 30346,
+ 31406,
+ 32859,
+ 33607
+ ]
+ },
+ {
+ "employeeID" : 4,
+ "lastName" : "Peacock",
+ "firstName" : "Margaret",
+ "title" : "Sales Representative",
+ "titleOfCourtesy" : "Mrs.",
+ "birthDate" : "1937-09-19 00:00:00.000",
+ "hireDate" : "1993-05-03 00:00:00.000",
+ "address" : {
+ "street" : "4110 Old Redmond Rd.",
+ "city" : "Redmond",
+ "region" : "WA",
+ "postalCode" : 98052,
+ "country" : "USA",
+ "phone" : "(206) 555-8122"
+ },
+ "notes" : "Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American Institute of Culinary Arts (1966). She was assigned to the London office temporarily from July through November 1992.",
+ "reportsTo" : 2,
+ "territoryIDs" : [
+ 20852,
+ 27403,
+ 27511
+ ]
+ },
+ {
+ "employeeID" : 6,
+ "lastName" : "Suyama",
+ "firstName" : "Michael",
+ "title" : "Sales Representative",
+ "titleOfCourtesy" : "Mr.",
+ "birthDate" : "1963-07-02 00:00:00.000",
+ "hireDate" : "1993-10-17 00:00:00.000",
+ "address" : {
+ "street" : "Coventry House Miner Rd.",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "EC2 7JR",
+ "country" : "UK",
+ "phone" : "(71) 555-7773"
+ },
+ "notes" : "Michael is a graduate of Sussex University (MA Economics 1983) and the University of California at Los Angeles (MBA marketing 1986). He has also taken the courses Multi-Cultural Selling and Time Management for the Sales Professional.",
+ "reportsTo" : 5,
+ "territoryIDs" : [
+ 85014,
+ 85251,
+ 98004,
+ 98104,
+ 98052
+ ]
+ },
+ {
+ "employeeID" : 7,
+ "lastName" : "King",
+ "firstName" : "Robert",
+ "title" : "Sales Representative",
+ "titleOfCourtesy" : "Mr.",
+ "birthDate" : "1960-05-29 00:00:00.000",
+ "hireDate" : "1994-01-02 00:00:00.000",
+ "address" : {
+ "street" : "Edgeham Hollow Winchester Way",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "RG1 9SP",
+ "country" : "UK",
+ "phone" : "(71) 555-5598"
+ },
+ "notes" : "Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the University of Michigan in 1992 the year he joined the company.",
+ "reportsTo" : 5,
+ "territoryIDs" : [
+ 60601,
+ 80202,
+ 80909,
+ 90405,
+ 94025,
+ 94105,
+ 95008,
+ 95054,
+ 95060,
+ 60179
+ ]
+ },
+ {
+ "employeeID" : 8,
+ "lastName" : "Callahan",
+ "firstName" : "Laura",
+ "title" : "Inside Sales Coordinator",
+ "titleOfCourtesy" : "Ms.",
+ "birthDate" : "1958-01-09 00:00:00.000",
+ "hireDate" : "1994-03-05 00:00:00.000",
+ "address" : {
+ "street" : "4726 11th Ave. N.E.",
+ "city" : "Seattle",
+ "region" : "WA",
+ "postalCode" : 98105,
+ "country" : "USA",
+ "phone" : "(206) 555-1189"
+ },
+ "notes" : "Laura received a BA in psychology from the University of Washington. She has also completed a course in business French. She reads and writes French.",
+ "reportsTo" : 2,
+ "territoryIDs" : [
+ 19428,
+ 44122,
+ 45839,
+ 53404
+ ]
+ },
+ {
+ "employeeID" : 9,
+ "lastName" : "Dodsworth",
+ "firstName" : "Anne",
+ "title" : "Sales Representative",
+ "titleOfCourtesy" : "Ms.",
+ "birthDate" : "1966-01-27 00:00:00.000",
+ "hireDate" : "1994-11-15 00:00:00.000",
+ "address" : {
+ "street" : "7 Houndstooth Rd.",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "WG2 7LT",
+ "country" : "UK",
+ "phone" : "(71) 555-4444"
+ },
+ "notes" : "Anne has a BA degree in English from St. Lawrence College. She is fluent in French and German.",
+ "reportsTo" : 5,
+ "territoryIDs" : [
+ 3049,
+ 3801,
+ 48075,
+ 48084,
+ 48304,
+ 55113,
+ 55439
+ ]
+ }
+]
diff --git a/vue-options-api-demos/grid/common/northwind/orders.json b/vue-options-api-demos/grid/common/northwind/orders.json
new file mode 100644
index 00000000..9d8d8ac9
--- /dev/null
+++ b/vue-options-api-demos/grid/common/northwind/orders.json
@@ -0,0 +1,25576 @@
+[
+ {
+ "orderID": 10271,
+ "customerID": "SPLIR",
+ "employeeID": 6,
+ "orderDate": "1996-08-01 00:00:00.000",
+ "requiredDate": "1996-08-29 00:00:00.000",
+ "shippedDate": "1996-08-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.54,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10266,
+ "customerID": "WARTH",
+ "employeeID": 3,
+ "orderDate": "1996-07-26 00:00:00.000",
+ "requiredDate": "1996-09-06 00:00:00.000",
+ "shippedDate": "1996-07-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 25.73,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 30.4,
+ "quantity": 12,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10279,
+ "customerID": "LEHMS",
+ "employeeID": 8,
+ "orderDate": "1996-08-13 00:00:00.000",
+ "requiredDate": "1996-09-10 00:00:00.000",
+ "shippedDate": "1996-08-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.83,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10292,
+ "customerID": "TRADH",
+ "employeeID": 1,
+ "orderDate": "1996-08-28 00:00:00.000",
+ "requiredDate": "1996-09-25 00:00:00.000",
+ "shippedDate": "1996-09-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.35,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10295,
+ "customerID": "VINET",
+ "employeeID": 2,
+ "orderDate": "1996-09-02 00:00:00.000",
+ "requiredDate": "1996-09-30 00:00:00.000",
+ "shippedDate": "1996-09-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.15,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10313,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1996-09-24 00:00:00.000",
+ "requiredDate": "1996-10-22 00:00:00.000",
+ "shippedDate": "1996-10-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.96,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10317,
+ "customerID": "LONEP",
+ "employeeID": 6,
+ "orderDate": "1996-09-30 00:00:00.000",
+ "requiredDate": "1996-10-28 00:00:00.000",
+ "shippedDate": "1996-10-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.69,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10322,
+ "customerID": "PERIC",
+ "employeeID": 7,
+ "orderDate": "1996-10-04 00:00:00.000",
+ "requiredDate": "1996-11-01 00:00:00.000",
+ "shippedDate": "1996-10-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.4,
+ "shipName": "Pericles Comidas clásicas",
+ "shipAddress": {
+ "street": "Calle Dr. Jorge Cash 321",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10320,
+ "customerID": "WARTH",
+ "employeeID": 5,
+ "orderDate": "1996-10-03 00:00:00.000",
+ "requiredDate": "1996-10-17 00:00:00.000",
+ "shippedDate": "1996-10-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 34.57,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10321,
+ "customerID": "ISLAT",
+ "employeeID": 3,
+ "orderDate": "1996-10-03 00:00:00.000",
+ "requiredDate": "1996-10-31 00:00:00.000",
+ "shippedDate": "1996-10-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.43,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10336,
+ "customerID": "PRINI",
+ "employeeID": 7,
+ "orderDate": "1996-10-23 00:00:00.000",
+ "requiredDate": "1996-11-20 00:00:00.000",
+ "shippedDate": "1996-10-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 15.51,
+ "shipName": "Princesa Isabel Vinhos",
+ "shipAddress": {
+ "street": "Estrada da saúde n. 58",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1756,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 18,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10349,
+ "customerID": "SPLIR",
+ "employeeID": 7,
+ "orderDate": "1996-11-08 00:00:00.000",
+ "requiredDate": "1996-12-06 00:00:00.000",
+ "shippedDate": "1996-11-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.63,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10331,
+ "customerID": "BONAP",
+ "employeeID": 9,
+ "orderDate": "1996-10-16 00:00:00.000",
+ "requiredDate": "1996-11-27 00:00:00.000",
+ "shippedDate": "1996-10-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 10.19,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10365,
+ "customerID": "ANTON",
+ "employeeID": 3,
+ "orderDate": "1996-11-27 00:00:00.000",
+ "requiredDate": "1996-12-25 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 22,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10371,
+ "customerID": "LAMAI",
+ "employeeID": 1,
+ "orderDate": "1996-12-03 00:00:00.000",
+ "requiredDate": "1996-12-31 00:00:00.000",
+ "shippedDate": "1996-12-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.45,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 6,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10376,
+ "customerID": "MEREP",
+ "employeeID": 1,
+ "orderDate": "1996-12-09 00:00:00.000",
+ "requiredDate": "1997-01-06 00:00:00.000",
+ "shippedDate": "1996-12-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 20.39,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 42,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10378,
+ "customerID": "FOLKO",
+ "employeeID": 5,
+ "orderDate": "1996-12-10 00:00:00.000",
+ "requiredDate": "1997-01-07 00:00:00.000",
+ "shippedDate": "1996-12-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 5.44,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10392,
+ "customerID": "PICCO",
+ "employeeID": 2,
+ "orderDate": "1996-12-24 00:00:00.000",
+ "requiredDate": "1997-01-21 00:00:00.000",
+ "shippedDate": "1997-01-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 122.46,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10391,
+ "customerID": "DRACD",
+ "employeeID": 3,
+ "orderDate": "1996-12-23 00:00:00.000",
+ "requiredDate": "1997-01-20 00:00:00.000",
+ "shippedDate": "1996-12-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 5.45,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10405,
+ "customerID": "LINOD",
+ "employeeID": 1,
+ "orderDate": "1997-01-06 00:00:00.000",
+ "requiredDate": "1997-02-03 00:00:00.000",
+ "shippedDate": "1997-01-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 34.82,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 8,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10412,
+ "customerID": "WARTH",
+ "employeeID": 8,
+ "orderDate": "1997-01-13 00:00:00.000",
+ "requiredDate": "1997-02-10 00:00:00.000",
+ "shippedDate": "1997-01-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.77,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10422,
+ "customerID": "FRANS",
+ "employeeID": 2,
+ "orderDate": "1997-01-22 00:00:00.000",
+ "requiredDate": "1997-02-19 00:00:00.000",
+ "shippedDate": "1997-01-31 00:00:00.000",
+ "shipVia": 1,
+ "freight": 3.02,
+ "shipName": "Franchi S.p.A.",
+ "shipAddress": {
+ "street": "Via Monte Bianco 34",
+ "city": "Torino",
+ "region": "NULL",
+ "postalCode": 10100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10433,
+ "customerID": "PRINI",
+ "employeeID": 3,
+ "orderDate": "1997-02-03 00:00:00.000",
+ "requiredDate": "1997-03-03 00:00:00.000",
+ "shippedDate": "1997-03-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 73.83,
+ "shipName": "Princesa Isabel Vinhos",
+ "shipAddress": {
+ "street": "Estrada da saúde n. 58",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1756,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10427,
+ "customerID": "PICCO",
+ "employeeID": 4,
+ "orderDate": "1997-01-27 00:00:00.000",
+ "requiredDate": "1997-02-24 00:00:00.000",
+ "shippedDate": "1997-03-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 31.29,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10437,
+ "customerID": "WARTH",
+ "employeeID": 8,
+ "orderDate": "1997-02-05 00:00:00.000",
+ "requiredDate": "1997-03-05 00:00:00.000",
+ "shippedDate": "1997-02-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 19.97,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10428,
+ "customerID": "REGGC",
+ "employeeID": 7,
+ "orderDate": "1997-01-28 00:00:00.000",
+ "requiredDate": "1997-02-25 00:00:00.000",
+ "shippedDate": "1997-02-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.09,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10441,
+ "customerID": "OLDWO",
+ "employeeID": 3,
+ "orderDate": "1997-02-10 00:00:00.000",
+ "requiredDate": "1997-03-24 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 73.02,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 27,
+ "unitPrice": 35.1,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10457,
+ "customerID": "KOENE",
+ "employeeID": 2,
+ "orderDate": "1997-02-25 00:00:00.000",
+ "requiredDate": "1997-03-25 00:00:00.000",
+ "shippedDate": "1997-03-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.57,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 36,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10478,
+ "customerID": "VICTE",
+ "employeeID": 2,
+ "orderDate": "1997-03-18 00:00:00.000",
+ "requiredDate": "1997-04-01 00:00:00.000",
+ "shippedDate": "1997-03-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.81,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10482,
+ "customerID": "LAZYK",
+ "employeeID": 1,
+ "orderDate": "1997-03-21 00:00:00.000",
+ "requiredDate": "1997-04-18 00:00:00.000",
+ "shippedDate": "1997-04-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7.48,
+ "shipName": "Lazy K Kountry Store",
+ "shipAddress": {
+ "street": "12 Orchestra Terrace",
+ "city": "Walla Walla",
+ "region": "WA",
+ "postalCode": 99362,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10494,
+ "customerID": "COMMI",
+ "employeeID": 4,
+ "orderDate": "1997-04-02 00:00:00.000",
+ "requiredDate": "1997-04-30 00:00:00.000",
+ "shippedDate": "1997-04-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 65.99,
+ "shipName": "Comércio Mineiro",
+ "shipAddress": {
+ "street": "Av. dos Lusíadas 23",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05432-043",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10501,
+ "customerID": "BLAUS",
+ "employeeID": 9,
+ "orderDate": "1997-04-09 00:00:00.000",
+ "requiredDate": "1997-05-07 00:00:00.000",
+ "shippedDate": "1997-04-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 8.85,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10496,
+ "customerID": "TRADH",
+ "employeeID": 7,
+ "orderDate": "1997-04-04 00:00:00.000",
+ "requiredDate": "1997-05-02 00:00:00.000",
+ "shippedDate": "1997-04-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 46.77,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10509,
+ "customerID": "BLAUS",
+ "employeeID": 4,
+ "orderDate": "1997-04-17 00:00:00.000",
+ "requiredDate": "1997-05-15 00:00:00.000",
+ "shippedDate": "1997-04-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.15,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10505,
+ "customerID": "MEREP",
+ "employeeID": 3,
+ "orderDate": "1997-04-14 00:00:00.000",
+ "requiredDate": "1997-05-12 00:00:00.000",
+ "shippedDate": "1997-04-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7.13,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10545,
+ "customerID": "LAZYK",
+ "employeeID": 8,
+ "orderDate": "1997-05-22 00:00:00.000",
+ "requiredDate": "1997-06-19 00:00:00.000",
+ "shippedDate": "1997-06-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 11.92,
+ "shipName": "Lazy K Kountry Store",
+ "shipAddress": {
+ "street": "12 Orchestra Terrace",
+ "city": "Walla Walla",
+ "region": "WA",
+ "postalCode": 99362,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10556,
+ "customerID": "SIMOB",
+ "employeeID": 2,
+ "orderDate": "1997-06-03 00:00:00.000",
+ "requiredDate": "1997-07-15 00:00:00.000",
+ "shippedDate": "1997-06-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 9.8,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10568,
+ "customerID": "GALED",
+ "employeeID": 3,
+ "orderDate": "1997-06-13 00:00:00.000",
+ "requiredDate": "1997-07-11 00:00:00.000",
+ "shippedDate": "1997-07-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 6.54,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10581,
+ "customerID": "FAMIA",
+ "employeeID": 3,
+ "orderDate": "1997-06-26 00:00:00.000",
+ "requiredDate": "1997-07-24 00:00:00.000",
+ "shippedDate": "1997-07-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 3.01,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10585,
+ "customerID": "WELLI",
+ "employeeID": 7,
+ "orderDate": "1997-07-01 00:00:00.000",
+ "requiredDate": "1997-07-29 00:00:00.000",
+ "shippedDate": "1997-07-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 13.41,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10586,
+ "customerID": "REGGC",
+ "employeeID": 9,
+ "orderDate": "1997-07-02 00:00:00.000",
+ "requiredDate": "1997-07-30 00:00:00.000",
+ "shippedDate": "1997-07-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.48,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 4,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10589,
+ "customerID": "GREAL",
+ "employeeID": 8,
+ "orderDate": "1997-07-04 00:00:00.000",
+ "requiredDate": "1997-08-01 00:00:00.000",
+ "shippedDate": "1997-07-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.42,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10584,
+ "customerID": "BLONP",
+ "employeeID": 4,
+ "orderDate": "1997-06-30 00:00:00.000",
+ "requiredDate": "1997-07-28 00:00:00.000",
+ "shippedDate": "1997-07-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 59.14,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 50,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10599,
+ "customerID": "BSBEV",
+ "employeeID": 6,
+ "orderDate": "1997-07-15 00:00:00.000",
+ "requiredDate": "1997-08-26 00:00:00.000",
+ "shippedDate": "1997-07-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 29.98,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10602,
+ "customerID": "VAFFE",
+ "employeeID": 8,
+ "orderDate": "1997-07-17 00:00:00.000",
+ "requiredDate": "1997-08-14 00:00:00.000",
+ "shippedDate": "1997-07-22 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.92,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 5,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10608,
+ "customerID": "TOMSP",
+ "employeeID": 4,
+ "orderDate": "1997-07-23 00:00:00.000",
+ "requiredDate": "1997-08-20 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 27.79,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10610,
+ "customerID": "LAMAI",
+ "employeeID": 8,
+ "orderDate": "1997-07-25 00:00:00.000",
+ "requiredDate": "1997-08-22 00:00:00.000",
+ "shippedDate": "1997-08-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 26.78,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 21,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10615,
+ "customerID": "WILMK",
+ "employeeID": 2,
+ "orderDate": "1997-07-30 00:00:00.000",
+ "requiredDate": "1997-08-27 00:00:00.000",
+ "shippedDate": "1997-08-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.75,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10617,
+ "customerID": "GREAL",
+ "employeeID": 4,
+ "orderDate": "1997-07-31 00:00:00.000",
+ "requiredDate": "1997-08-28 00:00:00.000",
+ "shippedDate": "1997-08-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 18.53,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10628,
+ "customerID": "BLONP",
+ "employeeID": 4,
+ "orderDate": "1997-08-12 00:00:00.000",
+ "requiredDate": "1997-09-09 00:00:00.000",
+ "shippedDate": "1997-08-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 30.36,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10631,
+ "customerID": "LAMAI",
+ "employeeID": 8,
+ "orderDate": "1997-08-14 00:00:00.000",
+ "requiredDate": "1997-09-11 00:00:00.000",
+ "shippedDate": "1997-08-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.87,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 8,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10639,
+ "customerID": "SANTG",
+ "employeeID": 7,
+ "orderDate": "1997-08-20 00:00:00.000",
+ "requiredDate": "1997-09-17 00:00:00.000",
+ "shippedDate": "1997-08-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 38.64,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10655,
+ "customerID": "REGGC",
+ "employeeID": 1,
+ "orderDate": "1997-09-03 00:00:00.000",
+ "requiredDate": "1997-10-01 00:00:00.000",
+ "shippedDate": "1997-09-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.41,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10660,
+ "customerID": "HUNGC",
+ "employeeID": 8,
+ "orderDate": "1997-09-08 00:00:00.000",
+ "requiredDate": "1997-10-06 00:00:00.000",
+ "shippedDate": "1997-10-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 111.29,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10662,
+ "customerID": "LONEP",
+ "employeeID": 3,
+ "orderDate": "1997-09-09 00:00:00.000",
+ "requiredDate": "1997-10-07 00:00:00.000",
+ "shippedDate": "1997-09-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.28,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10669,
+ "customerID": "SIMOB",
+ "employeeID": 2,
+ "orderDate": "1997-09-15 00:00:00.000",
+ "requiredDate": "1997-10-13 00:00:00.000",
+ "shippedDate": "1997-09-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 24.39,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10679,
+ "customerID": "BLONP",
+ "employeeID": 8,
+ "orderDate": "1997-09-23 00:00:00.000",
+ "requiredDate": "1997-10-21 00:00:00.000",
+ "shippedDate": "1997-09-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 27.94,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10683,
+ "customerID": "DUMON",
+ "employeeID": 2,
+ "orderDate": "1997-09-26 00:00:00.000",
+ "requiredDate": "1997-10-24 00:00:00.000",
+ "shippedDate": "1997-10-01 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.4,
+ "shipName": "Du monde entier",
+ "shipAddress": {
+ "street": "67 rue des Cinquante Otages",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10674,
+ "customerID": "ISLAT",
+ "employeeID": 4,
+ "orderDate": "1997-09-18 00:00:00.000",
+ "requiredDate": "1997-10-16 00:00:00.000",
+ "shippedDate": "1997-09-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.9,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10692,
+ "customerID": "ALFKI",
+ "employeeID": 4,
+ "orderDate": "1997-10-03 00:00:00.000",
+ "requiredDate": "1997-10-31 00:00:00.000",
+ "shippedDate": "1997-10-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 61.02,
+ "shipName": "Alfred's Futterkiste",
+ "shipAddress": {
+ "street": "Obere Str. 57",
+ "city": "Berlin",
+ "region": "NULL",
+ "postalCode": 12209,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10689,
+ "customerID": "BERGS",
+ "employeeID": 1,
+ "orderDate": "1997-10-01 00:00:00.000",
+ "requiredDate": "1997-10-29 00:00:00.000",
+ "shippedDate": "1997-10-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.42,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10699,
+ "customerID": "MORGK",
+ "employeeID": 3,
+ "orderDate": "1997-10-09 00:00:00.000",
+ "requiredDate": "1997-11-06 00:00:00.000",
+ "shippedDate": "1997-10-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.58,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10721,
+ "customerID": "QUICK",
+ "employeeID": 5,
+ "orderDate": "1997-10-29 00:00:00.000",
+ "requiredDate": "1997-11-26 00:00:00.000",
+ "shippedDate": "1997-10-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 48.92,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 50,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10723,
+ "customerID": "WHITC",
+ "employeeID": 3,
+ "orderDate": "1997-10-30 00:00:00.000",
+ "requiredDate": "1997-11-27 00:00:00.000",
+ "shippedDate": "1997-11-25 00:00:00.000",
+ "shipVia": 1,
+ "freight": 21.72,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10738,
+ "customerID": "SPECD",
+ "employeeID": 2,
+ "orderDate": "1997-11-12 00:00:00.000",
+ "requiredDate": "1997-12-10 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.91,
+ "shipName": "Spécialités du monde",
+ "shipAddress": {
+ "street": "25 rue Lauriston",
+ "city": "Paris",
+ "region": "NULL",
+ "postalCode": 75016,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10741,
+ "customerID": "AROUT",
+ "employeeID": 4,
+ "orderDate": "1997-11-14 00:00:00.000",
+ "requiredDate": "1997-11-28 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 10.96,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 15,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10732,
+ "customerID": "BONAP",
+ "employeeID": 3,
+ "orderDate": "1997-11-06 00:00:00.000",
+ "requiredDate": "1997-12-04 00:00:00.000",
+ "shippedDate": "1997-11-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.97,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10743,
+ "customerID": "AROUT",
+ "employeeID": 1,
+ "orderDate": "1997-11-17 00:00:00.000",
+ "requiredDate": "1997-12-15 00:00:00.000",
+ "shippedDate": "1997-11-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 23.72,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 28,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10754,
+ "customerID": "MAGAA",
+ "employeeID": 6,
+ "orderDate": "1997-11-25 00:00:00.000",
+ "requiredDate": "1997-12-23 00:00:00.000",
+ "shippedDate": "1997-11-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 2.38,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10744,
+ "customerID": "VAFFE",
+ "employeeID": 6,
+ "orderDate": "1997-11-17 00:00:00.000",
+ "requiredDate": "1997-12-15 00:00:00.000",
+ "shippedDate": "1997-11-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 69.19,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10765,
+ "customerID": "QUICK",
+ "employeeID": 3,
+ "orderDate": "1997-12-04 00:00:00.000",
+ "requiredDate": "1998-01-01 00:00:00.000",
+ "shippedDate": "1997-12-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 42.74,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 80,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10770,
+ "customerID": "HANAR",
+ "employeeID": 8,
+ "orderDate": "1997-12-09 00:00:00.000",
+ "requiredDate": "1998-01-06 00:00:00.000",
+ "shippedDate": "1997-12-17 00:00:00.000",
+ "shipVia": 3,
+ "freight": 5.32,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10771,
+ "customerID": "ERNSH",
+ "employeeID": 9,
+ "orderDate": "1997-12-10 00:00:00.000",
+ "requiredDate": "1998-01-07 00:00:00.000",
+ "shippedDate": "1998-01-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 11.19,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10767,
+ "customerID": "SUPRD",
+ "employeeID": 4,
+ "orderDate": "1997-12-05 00:00:00.000",
+ "requiredDate": "1998-01-02 00:00:00.000",
+ "shippedDate": "1997-12-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.59,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10782,
+ "customerID": "CACTU",
+ "employeeID": 9,
+ "orderDate": "1997-12-17 00:00:00.000",
+ "requiredDate": "1998-01-14 00:00:00.000",
+ "shippedDate": "1997-12-22 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.1,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10777,
+ "customerID": "GOURL",
+ "employeeID": 7,
+ "orderDate": "1997-12-15 00:00:00.000",
+ "requiredDate": "1997-12-29 00:00:00.000",
+ "shippedDate": "1998-01-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.01,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10778,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1997-12-16 00:00:00.000",
+ "requiredDate": "1998-01-13 00:00:00.000",
+ "shippedDate": "1997-12-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 6.79,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10797,
+ "customerID": "DRACD",
+ "employeeID": 7,
+ "orderDate": "1997-12-25 00:00:00.000",
+ "requiredDate": "1998-01-22 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 33.35,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10807,
+ "customerID": "FRANS",
+ "employeeID": 4,
+ "orderDate": "1997-12-31 00:00:00.000",
+ "requiredDate": "1998-01-28 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.36,
+ "shipName": "Franchi S.p.A.",
+ "shipAddress": {
+ "street": "Via Monte Bianco 34",
+ "city": "Torino",
+ "region": "NULL",
+ "postalCode": 10100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10809,
+ "customerID": "WELLI",
+ "employeeID": 7,
+ "orderDate": "1998-01-01 00:00:00.000",
+ "requiredDate": "1998-01-29 00:00:00.000",
+ "shippedDate": "1998-01-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.87,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10815,
+ "customerID": "SAVEA",
+ "employeeID": 2,
+ "orderDate": "1998-01-05 00:00:00.000",
+ "requiredDate": "1998-02-02 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 14.62,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10820,
+ "customerID": "RATTC",
+ "employeeID": 3,
+ "orderDate": "1998-01-07 00:00:00.000",
+ "requiredDate": "1998-02-04 00:00:00.000",
+ "shippedDate": "1998-01-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 37.52,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10843,
+ "customerID": "VICTE",
+ "employeeID": 4,
+ "orderDate": "1998-01-21 00:00:00.000",
+ "requiredDate": "1998-02-18 00:00:00.000",
+ "shippedDate": "1998-01-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 9.26,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 4,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10844,
+ "customerID": "PICCO",
+ "employeeID": 8,
+ "orderDate": "1998-01-21 00:00:00.000",
+ "requiredDate": "1998-02-18 00:00:00.000",
+ "shippedDate": "1998-01-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.22,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10853,
+ "customerID": "BLAUS",
+ "employeeID": 9,
+ "orderDate": "1998-01-27 00:00:00.000",
+ "requiredDate": "1998-02-24 00:00:00.000",
+ "shippedDate": "1998-02-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 53.83,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10874,
+ "customerID": "GODOS",
+ "employeeID": 5,
+ "orderDate": "1998-02-06 00:00:00.000",
+ "requiredDate": "1998-03-06 00:00:00.000",
+ "shippedDate": "1998-02-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 19.58,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10867,
+ "customerID": "LONEP",
+ "employeeID": 6,
+ "orderDate": "1998-02-03 00:00:00.000",
+ "requiredDate": "1998-03-17 00:00:00.000",
+ "shippedDate": "1998-02-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.93,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10878,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1998-02-10 00:00:00.000",
+ "requiredDate": "1998-03-10 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 46.69,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10883,
+ "customerID": "LONEP",
+ "employeeID": 8,
+ "orderDate": "1998-02-12 00:00:00.000",
+ "requiredDate": "1998-03-12 00:00:00.000",
+ "shippedDate": "1998-02-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.53,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10887,
+ "customerID": "GALED",
+ "employeeID": 8,
+ "orderDate": "1998-02-13 00:00:00.000",
+ "requiredDate": "1998-03-13 00:00:00.000",
+ "shippedDate": "1998-02-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.25,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10891,
+ "customerID": "LEHMS",
+ "employeeID": 7,
+ "orderDate": "1998-02-17 00:00:00.000",
+ "requiredDate": "1998-03-17 00:00:00.000",
+ "shippedDate": "1998-02-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 20.37,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10892,
+ "customerID": "MAISD",
+ "employeeID": 4,
+ "orderDate": "1998-02-17 00:00:00.000",
+ "requiredDate": "1998-03-17 00:00:00.000",
+ "shippedDate": "1998-02-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 120.27,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10881,
+ "customerID": "CACTU",
+ "employeeID": 4,
+ "orderDate": "1998-02-11 00:00:00.000",
+ "requiredDate": "1998-03-11 00:00:00.000",
+ "shippedDate": "1998-02-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.84,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10900,
+ "customerID": "WELLI",
+ "employeeID": 1,
+ "orderDate": "1998-02-20 00:00:00.000",
+ "requiredDate": "1998-03-20 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.66,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 3,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10905,
+ "customerID": "WELLI",
+ "employeeID": 9,
+ "orderDate": "1998-02-24 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-03-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.72,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10914,
+ "customerID": "QUEEN",
+ "employeeID": 6,
+ "orderDate": "1998-02-27 00:00:00.000",
+ "requiredDate": "1998-03-27 00:00:00.000",
+ "shippedDate": "1998-03-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 21.19,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10906,
+ "customerID": "WOLZA",
+ "employeeID": 4,
+ "orderDate": "1998-02-25 00:00:00.000",
+ "requiredDate": "1998-03-11 00:00:00.000",
+ "shippedDate": "1998-03-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 26.29,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10907,
+ "customerID": "SPECD",
+ "employeeID": 6,
+ "orderDate": "1998-02-25 00:00:00.000",
+ "requiredDate": "1998-03-25 00:00:00.000",
+ "shippedDate": "1998-02-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 9.19,
+ "shipName": "Spécialités du monde",
+ "shipAddress": {
+ "street": "25 rue Lauriston",
+ "city": "Paris",
+ "region": "NULL",
+ "postalCode": 75016,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10920,
+ "customerID": "AROUT",
+ "employeeID": 4,
+ "orderDate": "1998-03-03 00:00:00.000",
+ "requiredDate": "1998-03-31 00:00:00.000",
+ "shippedDate": "1998-03-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 29.61,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 50,
+ "unitPrice": 16.25,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10934,
+ "customerID": "LEHMS",
+ "employeeID": 3,
+ "orderDate": "1998-03-09 00:00:00.000",
+ "requiredDate": "1998-04-06 00:00:00.000",
+ "shippedDate": "1998-03-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 32.01,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10936,
+ "customerID": "GREAL",
+ "employeeID": 3,
+ "orderDate": "1998-03-09 00:00:00.000",
+ "requiredDate": "1998-04-06 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 33.68,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10942,
+ "customerID": "REGGC",
+ "employeeID": 9,
+ "orderDate": "1998-03-11 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 17.95,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10947,
+ "customerID": "BSBEV",
+ "employeeID": 3,
+ "orderDate": "1998-03-13 00:00:00.000",
+ "requiredDate": "1998-04-10 00:00:00.000",
+ "shippedDate": "1998-03-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.26,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10955,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1998-03-17 00:00:00.000",
+ "requiredDate": "1998-04-14 00:00:00.000",
+ "shippedDate": "1998-03-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.26,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 12,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10950,
+ "customerID": "MAGAA",
+ "employeeID": 1,
+ "orderDate": "1998-03-16 00:00:00.000",
+ "requiredDate": "1998-04-13 00:00:00.000",
+ "shippedDate": "1998-03-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.5,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10963,
+ "customerID": "FURIB",
+ "employeeID": 9,
+ "orderDate": "1998-03-19 00:00:00.000",
+ "requiredDate": "1998-04-16 00:00:00.000",
+ "shippedDate": "1998-03-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 2.7,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 2,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10969,
+ "customerID": "COMMI",
+ "employeeID": 1,
+ "orderDate": "1998-03-23 00:00:00.000",
+ "requiredDate": "1998-04-20 00:00:00.000",
+ "shippedDate": "1998-03-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.21,
+ "shipName": "Comércio Mineiro",
+ "shipAddress": {
+ "street": "Av. dos Lusíadas 23",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05432-043",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10970,
+ "customerID": "BOLID",
+ "employeeID": 9,
+ "orderDate": "1998-03-24 00:00:00.000",
+ "requiredDate": "1998-04-07 00:00:00.000",
+ "shippedDate": "1998-04-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.16,
+ "shipName": "Bólido Comidas preparadas",
+ "shipAddress": {
+ "street": "C/ Araquil 67",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28023,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10971,
+ "customerID": "FRANR",
+ "employeeID": 2,
+ "orderDate": "1998-03-24 00:00:00.000",
+ "requiredDate": "1998-04-21 00:00:00.000",
+ "shippedDate": "1998-04-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 121.82,
+ "shipName": "France restauration",
+ "shipAddress": {
+ "street": "54 rue Royale",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10965,
+ "customerID": "OLDWO",
+ "employeeID": 6,
+ "orderDate": "1998-03-20 00:00:00.000",
+ "requiredDate": "1998-04-17 00:00:00.000",
+ "shippedDate": "1998-03-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 144.38,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10974,
+ "customerID": "SPLIR",
+ "employeeID": 3,
+ "orderDate": "1998-03-25 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-04-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 12.96,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10980,
+ "customerID": "FOLKO",
+ "employeeID": 4,
+ "orderDate": "1998-03-27 00:00:00.000",
+ "requiredDate": "1998-05-08 00:00:00.000",
+ "shippedDate": "1998-04-17 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.26,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10981,
+ "customerID": "HANAR",
+ "employeeID": 1,
+ "orderDate": "1998-03-27 00:00:00.000",
+ "requiredDate": "1998-04-24 00:00:00.000",
+ "shippedDate": "1998-04-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 193.37,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10959,
+ "customerID": "GOURL",
+ "employeeID": 6,
+ "orderDate": "1998-03-18 00:00:00.000",
+ "requiredDate": "1998-04-29 00:00:00.000",
+ "shippedDate": "1998-03-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.98,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10992,
+ "customerID": "THEBI",
+ "employeeID": 1,
+ "orderDate": "1998-04-01 00:00:00.000",
+ "requiredDate": "1998-04-29 00:00:00.000",
+ "shippedDate": "1998-04-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.27,
+ "shipName": "The Big Cheese",
+ "shipAddress": {
+ "street": "89 Jefferson Way Suite 2",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97201,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10994,
+ "customerID": "VAFFE",
+ "employeeID": 2,
+ "orderDate": "1998-04-02 00:00:00.000",
+ "requiredDate": "1998-04-16 00:00:00.000",
+ "shippedDate": "1998-04-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 65.53,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 18,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10996,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1998-04-02 00:00:00.000",
+ "requiredDate": "1998-04-30 00:00:00.000",
+ "shippedDate": "1998-04-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.12,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11014,
+ "customerID": "LINOD",
+ "employeeID": 2,
+ "orderDate": "1998-04-10 00:00:00.000",
+ "requiredDate": "1998-05-08 00:00:00.000",
+ "shippedDate": "1998-04-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 23.6,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 28,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 11020,
+ "customerID": "OTTIK",
+ "employeeID": 2,
+ "orderDate": "1998-04-14 00:00:00.000",
+ "requiredDate": "1998-05-12 00:00:00.000",
+ "shippedDate": "1998-04-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 43.3,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 24,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 11040,
+ "customerID": "GREAL",
+ "employeeID": 4,
+ "orderDate": "1998-04-22 00:00:00.000",
+ "requiredDate": "1998-05-20 00:00:00.000",
+ "shippedDate": "NULL",
+ "shipVia": 3,
+ "freight": 18.84,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11043,
+ "customerID": "SPECD",
+ "employeeID": 5,
+ "orderDate": "1998-04-22 00:00:00.000",
+ "requiredDate": "1998-05-20 00:00:00.000",
+ "shippedDate": "1998-04-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.8,
+ "shipName": "Spécialités du monde",
+ "shipAddress": {
+ "street": "25 rue Lauriston",
+ "city": "Paris",
+ "region": "NULL",
+ "postalCode": 75016,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11044,
+ "customerID": "WOLZA",
+ "employeeID": 4,
+ "orderDate": "1998-04-23 00:00:00.000",
+ "requiredDate": "1998-05-21 00:00:00.000",
+ "shippedDate": "1998-05-01 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.72,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11048,
+ "customerID": "BOTTM",
+ "employeeID": 7,
+ "orderDate": "1998-04-24 00:00:00.000",
+ "requiredDate": "1998-05-22 00:00:00.000",
+ "shippedDate": "1998-04-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 24.12,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 42,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11037,
+ "customerID": "GODOS",
+ "employeeID": 7,
+ "orderDate": "1998-04-21 00:00:00.000",
+ "requiredDate": "1998-05-19 00:00:00.000",
+ "shippedDate": "1998-04-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 3.2,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11050,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1998-04-27 00:00:00.000",
+ "requiredDate": "1998-05-25 00:00:00.000",
+ "shippedDate": "1998-05-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 59.41,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 50,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 11057,
+ "customerID": "NORTS",
+ "employeeID": 3,
+ "orderDate": "1998-04-29 00:00:00.000",
+ "requiredDate": "1998-05-27 00:00:00.000",
+ "shippedDate": "1998-05-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.13,
+ "shipName": "North/South",
+ "shipAddress": {
+ "street": "South House 300 Queensbridge",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "SW7 1RZ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11061,
+ "customerID": "GREAL",
+ "employeeID": 4,
+ "orderDate": "1998-04-30 00:00:00.000",
+ "requiredDate": "1998-06-11 00:00:00.000",
+ "shippedDate": "NULL",
+ "shipVia": 3,
+ "freight": 14.01,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11051,
+ "customerID": "LAMAI",
+ "employeeID": 7,
+ "orderDate": "1998-04-27 00:00:00.000",
+ "requiredDate": "1998-05-25 00:00:00.000",
+ "shippedDate": "NULL",
+ "shipVia": 3,
+ "freight": 2.79,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 11067,
+ "customerID": "DRACD",
+ "employeeID": 1,
+ "orderDate": "1998-05-04 00:00:00.000",
+ "requiredDate": "1998-05-18 00:00:00.000",
+ "shippedDate": "1998-05-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.98,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11069,
+ "customerID": "TORTU",
+ "employeeID": 1,
+ "orderDate": "1998-05-04 00:00:00.000",
+ "requiredDate": "1998-06-01 00:00:00.000",
+ "shippedDate": "1998-05-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 15.67,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11074,
+ "customerID": "SIMOB",
+ "employeeID": 7,
+ "orderDate": "1998-05-06 00:00:00.000",
+ "requiredDate": "1998-06-03 00:00:00.000",
+ "shippedDate": "NULL",
+ "shipVia": 2,
+ "freight": 18.44,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 14,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10248,
+ "customerID": "VINET",
+ "employeeID": 5,
+ "orderDate": "1996-07-04 00:00:00.000",
+ "requiredDate": "1996-08-01 00:00:00.000",
+ "shippedDate": "1996-07-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 32.38,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 14,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 9.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10249,
+ "customerID": "TOMSP",
+ "employeeID": 6,
+ "orderDate": "1996-07-05 00:00:00.000",
+ "requiredDate": "1996-08-16 00:00:00.000",
+ "shippedDate": "1996-07-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.61,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10250,
+ "customerID": "HANAR",
+ "employeeID": 4,
+ "orderDate": "1996-07-08 00:00:00.000",
+ "requiredDate": "1996-08-05 00:00:00.000",
+ "shippedDate": "1996-07-12 00:00:00.000",
+ "shipVia": 2,
+ "freight": 65.83,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10252,
+ "customerID": "SUPRD",
+ "employeeID": 4,
+ "orderDate": "1996-07-09 00:00:00.000",
+ "requiredDate": "1996-08-06 00:00:00.000",
+ "shippedDate": "1996-07-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 51.3,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 40,
+ "discount": 0.05
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 25,
+ "discount": 0.05
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10253,
+ "customerID": "HANAR",
+ "employeeID": 3,
+ "orderDate": "1996-07-10 00:00:00.000",
+ "requiredDate": "1996-07-24 00:00:00.000",
+ "shippedDate": "1996-07-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.17,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10251,
+ "customerID": "VICTE",
+ "employeeID": 3,
+ "orderDate": "1996-07-08 00:00:00.000",
+ "requiredDate": "1996-08-05 00:00:00.000",
+ "shippedDate": "1996-07-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 41.34,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 16.8,
+ "quantity": 6,
+ "discount": 0.05
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10257,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1996-07-16 00:00:00.000",
+ "requiredDate": "1996-08-13 00:00:00.000",
+ "shippedDate": "1996-07-22 00:00:00.000",
+ "shipVia": 3,
+ "freight": 81.91,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 27,
+ "unitPrice": 35.1,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10258,
+ "customerID": "ERNSH",
+ "employeeID": 1,
+ "orderDate": "1996-07-17 00:00:00.000",
+ "requiredDate": "1996-08-14 00:00:00.000",
+ "shippedDate": "1996-07-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 140.51,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 50,
+ "discount": 0.2
+ },
+ {
+ "productID": 5,
+ "unitPrice": 17,
+ "quantity": 65,
+ "discount": 0.2
+ },
+ {
+ "productID": 32,
+ "unitPrice": 25.6,
+ "quantity": 6,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10259,
+ "customerID": "CENTC",
+ "employeeID": 4,
+ "orderDate": "1996-07-18 00:00:00.000",
+ "requiredDate": "1996-08-15 00:00:00.000",
+ "shippedDate": "1996-07-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.25,
+ "shipName": "Centro comercial Moctezuma",
+ "shipAddress": {
+ "street": "Sierras de Granada 9993",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5022,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 37,
+ "unitPrice": 20.8,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10260,
+ "customerID": "OTTIK",
+ "employeeID": 4,
+ "orderDate": "1996-07-19 00:00:00.000",
+ "requiredDate": "1996-08-16 00:00:00.000",
+ "shippedDate": "1996-07-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.09,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 16,
+ "discount": 0.25
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 21,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10261,
+ "customerID": "QUEDE",
+ "employeeID": 4,
+ "orderDate": "1996-07-19 00:00:00.000",
+ "requiredDate": "1996-08-16 00:00:00.000",
+ "shippedDate": "1996-07-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.05,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10262,
+ "customerID": "RATTC",
+ "employeeID": 8,
+ "orderDate": "1996-07-22 00:00:00.000",
+ "requiredDate": "1996-08-19 00:00:00.000",
+ "shippedDate": "1996-07-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 48.29,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 5,
+ "unitPrice": 17,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 7,
+ "unitPrice": 24,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10256,
+ "customerID": "WELLI",
+ "employeeID": 3,
+ "orderDate": "1996-07-15 00:00:00.000",
+ "requiredDate": "1996-08-12 00:00:00.000",
+ "shippedDate": "1996-07-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.97,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10255,
+ "customerID": "RICSU",
+ "employeeID": 9,
+ "orderDate": "1996-07-12 00:00:00.000",
+ "requiredDate": "1996-08-09 00:00:00.000",
+ "shippedDate": "1996-07-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 148.33,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10264,
+ "customerID": "FOLKO",
+ "employeeID": 6,
+ "orderDate": "1996-07-24 00:00:00.000",
+ "requiredDate": "1996-08-21 00:00:00.000",
+ "shippedDate": "1996-08-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.67,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 25,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10265,
+ "customerID": "BLONP",
+ "employeeID": 2,
+ "orderDate": "1996-07-25 00:00:00.000",
+ "requiredDate": "1996-08-22 00:00:00.000",
+ "shippedDate": "1996-08-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.28,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10254,
+ "customerID": "CHOPS",
+ "employeeID": 5,
+ "orderDate": "1996-07-11 00:00:00.000",
+ "requiredDate": "1996-08-08 00:00:00.000",
+ "shippedDate": "1996-07-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 22.98,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 21,
+ "discount": 0.15
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10263,
+ "customerID": "ERNSH",
+ "employeeID": 9,
+ "orderDate": "1996-07-23 00:00:00.000",
+ "requiredDate": "1996-08-20 00:00:00.000",
+ "shippedDate": "1996-07-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 146.06,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 60,
+ "discount": 0.25
+ },
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 60,
+ "discount": 0.25
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 36,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10268,
+ "customerID": "GROSR",
+ "employeeID": 8,
+ "orderDate": "1996-07-30 00:00:00.000",
+ "requiredDate": "1996-08-27 00:00:00.000",
+ "shippedDate": "1996-08-02 00:00:00.000",
+ "shipVia": 3,
+ "freight": 66.29,
+ "shipName": "GROSELLA-Restaurante",
+ "shipAddress": {
+ "street": "5ª Ave. Los Palos Grandes",
+ "city": "Caracas",
+ "region": "DF",
+ "postalCode": 1081,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10267,
+ "customerID": "FRANK",
+ "employeeID": 4,
+ "orderDate": "1996-07-29 00:00:00.000",
+ "requiredDate": "1996-08-26 00:00:00.000",
+ "shippedDate": "1996-08-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 208.58,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 70,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10270,
+ "customerID": "WARTH",
+ "employeeID": 1,
+ "orderDate": "1996-08-01 00:00:00.000",
+ "requiredDate": "1996-08-29 00:00:00.000",
+ "shippedDate": "1996-08-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 136.54,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10274,
+ "customerID": "VINET",
+ "employeeID": 6,
+ "orderDate": "1996-08-06 00:00:00.000",
+ "requiredDate": "1996-09-03 00:00:00.000",
+ "shippedDate": "1996-08-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 6.01,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10275,
+ "customerID": "MAGAA",
+ "employeeID": 1,
+ "orderDate": "1996-08-07 00:00:00.000",
+ "requiredDate": "1996-09-04 00:00:00.000",
+ "shippedDate": "1996-08-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 26.93,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 6,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10276,
+ "customerID": "TORTU",
+ "employeeID": 8,
+ "orderDate": "1996-08-08 00:00:00.000",
+ "requiredDate": "1996-08-22 00:00:00.000",
+ "shippedDate": "1996-08-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.84,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10277,
+ "customerID": "MORGK",
+ "employeeID": 2,
+ "orderDate": "1996-08-09 00:00:00.000",
+ "requiredDate": "1996-09-06 00:00:00.000",
+ "shippedDate": "1996-08-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 125.77,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10273,
+ "customerID": "QUICK",
+ "employeeID": 3,
+ "orderDate": "1996-08-05 00:00:00.000",
+ "requiredDate": "1996-09-02 00:00:00.000",
+ "shippedDate": "1996-08-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 76.07,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 33,
+ "discount": 0.05
+ },
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 24,
+ "discount": 0.05
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10272,
+ "customerID": "RATTC",
+ "employeeID": 6,
+ "orderDate": "1996-08-02 00:00:00.000",
+ "requiredDate": "1996-08-30 00:00:00.000",
+ "shippedDate": "1996-08-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 98.03,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10278,
+ "customerID": "BERGS",
+ "employeeID": 8,
+ "orderDate": "1996-08-12 00:00:00.000",
+ "requiredDate": "1996-09-09 00:00:00.000",
+ "shippedDate": "1996-08-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 92.69,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 73,
+ "unitPrice": 12,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10269,
+ "customerID": "WHITC",
+ "employeeID": 5,
+ "orderDate": "1996-07-31 00:00:00.000",
+ "requiredDate": "1996-08-14 00:00:00.000",
+ "shippedDate": "1996-08-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.56,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10280,
+ "customerID": "BERGS",
+ "employeeID": 2,
+ "orderDate": "1996-08-14 00:00:00.000",
+ "requiredDate": "1996-09-11 00:00:00.000",
+ "shippedDate": "1996-09-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.98,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10281,
+ "customerID": "ROMEY",
+ "employeeID": 4,
+ "orderDate": "1996-08-14 00:00:00.000",
+ "requiredDate": "1996-08-28 00:00:00.000",
+ "shippedDate": "1996-08-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.94,
+ "shipName": "Romero y tomillo",
+ "shipAddress": {
+ "street": "Gran Vía 1",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28001,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 1,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10282,
+ "customerID": "ROMEY",
+ "employeeID": 4,
+ "orderDate": "1996-08-15 00:00:00.000",
+ "requiredDate": "1996-09-12 00:00:00.000",
+ "shippedDate": "1996-08-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.69,
+ "shipName": "Romero y tomillo",
+ "shipAddress": {
+ "street": "Gran Vía 1",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28001,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10283,
+ "customerID": "LILAS",
+ "employeeID": 3,
+ "orderDate": "1996-08-16 00:00:00.000",
+ "requiredDate": "1996-09-13 00:00:00.000",
+ "shippedDate": "1996-08-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 84.81,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 12.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10284,
+ "customerID": "LEHMS",
+ "employeeID": 4,
+ "orderDate": "1996-08-19 00:00:00.000",
+ "requiredDate": "1996-09-16 00:00:00.000",
+ "shippedDate": "1996-08-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 76.56,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 27,
+ "unitPrice": 35.1,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 67,
+ "unitPrice": 11.2,
+ "quantity": 5,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10285,
+ "customerID": "QUICK",
+ "employeeID": 1,
+ "orderDate": "1996-08-20 00:00:00.000",
+ "requiredDate": "1996-09-17 00:00:00.000",
+ "shippedDate": "1996-08-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 76.83,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 45,
+ "discount": 0.2
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 36,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10286,
+ "customerID": "QUICK",
+ "employeeID": 8,
+ "orderDate": "1996-08-21 00:00:00.000",
+ "requiredDate": "1996-09-18 00:00:00.000",
+ "shippedDate": "1996-08-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 229.24,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 100,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10287,
+ "customerID": "RICAR",
+ "employeeID": 8,
+ "orderDate": "1996-08-22 00:00:00.000",
+ "requiredDate": "1996-09-19 00:00:00.000",
+ "shippedDate": "1996-08-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 12.76,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10288,
+ "customerID": "REGGC",
+ "employeeID": 4,
+ "orderDate": "1996-08-23 00:00:00.000",
+ "requiredDate": "1996-09-20 00:00:00.000",
+ "shippedDate": "1996-09-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 7.45,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 3,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10289,
+ "customerID": "BSBEV",
+ "employeeID": 7,
+ "orderDate": "1996-08-26 00:00:00.000",
+ "requiredDate": "1996-09-23 00:00:00.000",
+ "shippedDate": "1996-08-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 22.77,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10290,
+ "customerID": "COMMI",
+ "employeeID": 8,
+ "orderDate": "1996-08-27 00:00:00.000",
+ "requiredDate": "1996-09-24 00:00:00.000",
+ "shippedDate": "1996-09-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 79.7,
+ "shipName": "Comércio Mineiro",
+ "shipAddress": {
+ "street": "Av. dos Lusíadas 23",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05432-043",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 5,
+ "unitPrice": 17,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10291,
+ "customerID": "QUEDE",
+ "employeeID": 6,
+ "orderDate": "1996-08-27 00:00:00.000",
+ "requiredDate": "1996-09-24 00:00:00.000",
+ "shippedDate": "1996-09-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 6.4,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 24,
+ "discount": 0.1
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 2,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10296,
+ "customerID": "LILAS",
+ "employeeID": 6,
+ "orderDate": "1996-09-03 00:00:00.000",
+ "requiredDate": "1996-10-01 00:00:00.000",
+ "shippedDate": "1996-09-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.12,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10297,
+ "customerID": "BLONP",
+ "employeeID": 5,
+ "orderDate": "1996-09-04 00:00:00.000",
+ "requiredDate": "1996-10-16 00:00:00.000",
+ "shippedDate": "1996-09-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 5.74,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10298,
+ "customerID": "HUNGO",
+ "employeeID": 6,
+ "orderDate": "1996-09-05 00:00:00.000",
+ "requiredDate": "1996-10-03 00:00:00.000",
+ "shippedDate": "1996-09-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 168.22,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10299,
+ "customerID": "RICAR",
+ "employeeID": 4,
+ "orderDate": "1996-09-06 00:00:00.000",
+ "requiredDate": "1996-10-04 00:00:00.000",
+ "shippedDate": "1996-09-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 29.76,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10300,
+ "customerID": "MAGAA",
+ "employeeID": 2,
+ "orderDate": "1996-09-09 00:00:00.000",
+ "requiredDate": "1996-10-07 00:00:00.000",
+ "shippedDate": "1996-09-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 17.68,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 66,
+ "unitPrice": 13.6,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10301,
+ "customerID": "WANDK",
+ "employeeID": 8,
+ "orderDate": "1996-09-09 00:00:00.000",
+ "requiredDate": "1996-10-07 00:00:00.000",
+ "shippedDate": "1996-09-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 45.08,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10293,
+ "customerID": "TORTU",
+ "employeeID": 1,
+ "orderDate": "1996-08-29 00:00:00.000",
+ "requiredDate": "1996-09-26 00:00:00.000",
+ "shippedDate": "1996-09-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 21.18,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10294,
+ "customerID": "RATTC",
+ "employeeID": 4,
+ "orderDate": "1996-08-30 00:00:00.000",
+ "requiredDate": "1996-09-27 00:00:00.000",
+ "shippedDate": "1996-09-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 147.26,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10302,
+ "customerID": "SUPRD",
+ "employeeID": 4,
+ "orderDate": "1996-09-10 00:00:00.000",
+ "requiredDate": "1996-10-08 00:00:00.000",
+ "shippedDate": "1996-10-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 6.27,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10303,
+ "customerID": "GODOS",
+ "employeeID": 7,
+ "orderDate": "1996-09-11 00:00:00.000",
+ "requiredDate": "1996-10-09 00:00:00.000",
+ "shippedDate": "1996-09-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 107.83,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10304,
+ "customerID": "TORTU",
+ "employeeID": 1,
+ "orderDate": "1996-09-12 00:00:00.000",
+ "requiredDate": "1996-10-10 00:00:00.000",
+ "shippedDate": "1996-09-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 63.79,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10306,
+ "customerID": "ROMEY",
+ "employeeID": 1,
+ "orderDate": "1996-09-16 00:00:00.000",
+ "requiredDate": "1996-10-14 00:00:00.000",
+ "shippedDate": "1996-09-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7.56,
+ "shipName": "Romero y tomillo",
+ "shipAddress": {
+ "street": "Gran Vía 1",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28001,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10305,
+ "customerID": "OLDWO",
+ "employeeID": 8,
+ "orderDate": "1996-09-13 00:00:00.000",
+ "requiredDate": "1996-10-11 00:00:00.000",
+ "shippedDate": "1996-10-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 257.62,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 25,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10307,
+ "customerID": "LONEP",
+ "employeeID": 2,
+ "orderDate": "1996-09-17 00:00:00.000",
+ "requiredDate": "1996-10-15 00:00:00.000",
+ "shippedDate": "1996-09-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.56,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10308,
+ "customerID": "ANATR",
+ "employeeID": 7,
+ "orderDate": "1996-09-18 00:00:00.000",
+ "requiredDate": "1996-10-16 00:00:00.000",
+ "shippedDate": "1996-09-24 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.61,
+ "shipName": "Ana Trujillo Emparedados y helados",
+ "shipAddress": {
+ "street": "Avda. de la Constitución 2222",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5021,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 1,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10309,
+ "customerID": "HUNGO",
+ "employeeID": 3,
+ "orderDate": "1996-09-19 00:00:00.000",
+ "requiredDate": "1996-10-17 00:00:00.000",
+ "shippedDate": "1996-10-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 47.3,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 6,
+ "unitPrice": 20,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10310,
+ "customerID": "THEBI",
+ "employeeID": 8,
+ "orderDate": "1996-09-20 00:00:00.000",
+ "requiredDate": "1996-10-18 00:00:00.000",
+ "shippedDate": "1996-09-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 17.52,
+ "shipName": "The Big Cheese",
+ "shipAddress": {
+ "street": "89 Jefferson Way Suite 2",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97201,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10314,
+ "customerID": "RATTC",
+ "employeeID": 1,
+ "orderDate": "1996-09-25 00:00:00.000",
+ "requiredDate": "1996-10-23 00:00:00.000",
+ "shippedDate": "1996-10-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 74.16,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 25.6,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 58,
+ "unitPrice": 10.6,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 25,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10315,
+ "customerID": "ISLAT",
+ "employeeID": 4,
+ "orderDate": "1996-09-26 00:00:00.000",
+ "requiredDate": "1996-10-24 00:00:00.000",
+ "shippedDate": "1996-10-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 41.76,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10316,
+ "customerID": "RATTC",
+ "employeeID": 1,
+ "orderDate": "1996-09-27 00:00:00.000",
+ "requiredDate": "1996-10-25 00:00:00.000",
+ "shippedDate": "1996-10-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 150.15,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10311,
+ "customerID": "DUMON",
+ "employeeID": 1,
+ "orderDate": "1996-09-20 00:00:00.000",
+ "requiredDate": "1996-10-04 00:00:00.000",
+ "shippedDate": "1996-09-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 24.69,
+ "shipName": "Du monde entier",
+ "shipAddress": {
+ "street": "67 rue des Cinquante Otages",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10312,
+ "customerID": "WANDK",
+ "employeeID": 2,
+ "orderDate": "1996-09-23 00:00:00.000",
+ "requiredDate": "1996-10-21 00:00:00.000",
+ "shippedDate": "1996-10-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 40.26,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10319,
+ "customerID": "TORTU",
+ "employeeID": 7,
+ "orderDate": "1996-10-02 00:00:00.000",
+ "requiredDate": "1996-10-30 00:00:00.000",
+ "shippedDate": "1996-10-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 64.5,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10318,
+ "customerID": "ISLAT",
+ "employeeID": 8,
+ "orderDate": "1996-10-01 00:00:00.000",
+ "requiredDate": "1996-10-29 00:00:00.000",
+ "shippedDate": "1996-10-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.73,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10326,
+ "customerID": "BOLID",
+ "employeeID": 4,
+ "orderDate": "1996-10-10 00:00:00.000",
+ "requiredDate": "1996-11-07 00:00:00.000",
+ "shippedDate": "1996-10-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 77.92,
+ "shipName": "Bólido Comidas preparadas",
+ "shipAddress": {
+ "street": "C/ Araquil 67",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28023,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10323,
+ "customerID": "KOENE",
+ "employeeID": 4,
+ "orderDate": "1996-10-07 00:00:00.000",
+ "requiredDate": "1996-11-04 00:00:00.000",
+ "shippedDate": "1996-10-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.88,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 12.4,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10327,
+ "customerID": "FOLKO",
+ "employeeID": 2,
+ "orderDate": "1996-10-11 00:00:00.000",
+ "requiredDate": "1996-11-08 00:00:00.000",
+ "shippedDate": "1996-10-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 63.36,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 50,
+ "discount": 0.2
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 58,
+ "unitPrice": 10.6,
+ "quantity": 30,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10328,
+ "customerID": "FURIB",
+ "employeeID": 4,
+ "orderDate": "1996-10-14 00:00:00.000",
+ "requiredDate": "1996-11-11 00:00:00.000",
+ "shippedDate": "1996-10-17 00:00:00.000",
+ "shipVia": 3,
+ "freight": 87.03,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10330,
+ "customerID": "LILAS",
+ "employeeID": 3,
+ "orderDate": "1996-10-16 00:00:00.000",
+ "requiredDate": "1996-11-13 00:00:00.000",
+ "shippedDate": "1996-10-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.75,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 25,
+ "discount": 0.15
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 50,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10329,
+ "customerID": "SPLIR",
+ "employeeID": 4,
+ "orderDate": "1996-10-15 00:00:00.000",
+ "requiredDate": "1996-11-26 00:00:00.000",
+ "shippedDate": "1996-10-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 191.67,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 8,
+ "discount": 0.05
+ },
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 12,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10324,
+ "customerID": "SAVEA",
+ "employeeID": 9,
+ "orderDate": "1996-10-08 00:00:00.000",
+ "requiredDate": "1996-11-05 00:00:00.000",
+ "shippedDate": "1996-10-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 214.27,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 70,
+ "discount": 0.15
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 21,
+ "discount": 0.15
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 80,
+ "discount": 0.15
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 40,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10333,
+ "customerID": "WARTH",
+ "employeeID": 5,
+ "orderDate": "1996-10-18 00:00:00.000",
+ "requiredDate": "1996-11-15 00:00:00.000",
+ "shippedDate": "1996-10-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.59,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 40,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10334,
+ "customerID": "VICTE",
+ "employeeID": 8,
+ "orderDate": "1996-10-21 00:00:00.000",
+ "requiredDate": "1996-11-18 00:00:00.000",
+ "shippedDate": "1996-10-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.56,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10335,
+ "customerID": "HUNGO",
+ "employeeID": 7,
+ "orderDate": "1996-10-22 00:00:00.000",
+ "requiredDate": "1996-11-19 00:00:00.000",
+ "shippedDate": "1996-10-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 42.11,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 32,
+ "unitPrice": 25.6,
+ "quantity": 6,
+ "discount": 0.2
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 48,
+ "discount": 0.2
+ },
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 7,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10337,
+ "customerID": "FRANK",
+ "employeeID": 4,
+ "orderDate": "1996-10-24 00:00:00.000",
+ "requiredDate": "1996-11-21 00:00:00.000",
+ "shippedDate": "1996-10-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 108.26,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 37,
+ "unitPrice": 20.8,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10338,
+ "customerID": "OLDWO",
+ "employeeID": 4,
+ "orderDate": "1996-10-25 00:00:00.000",
+ "requiredDate": "1996-11-22 00:00:00.000",
+ "shippedDate": "1996-10-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 84.21,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10339,
+ "customerID": "MEREP",
+ "employeeID": 2,
+ "orderDate": "1996-10-28 00:00:00.000",
+ "requiredDate": "1996-11-25 00:00:00.000",
+ "shippedDate": "1996-11-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 15.66,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 70,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10340,
+ "customerID": "BONAP",
+ "employeeID": 1,
+ "orderDate": "1996-10-29 00:00:00.000",
+ "requiredDate": "1996-11-26 00:00:00.000",
+ "shippedDate": "1996-11-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 166.31,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10341,
+ "customerID": "SIMOB",
+ "employeeID": 7,
+ "orderDate": "1996-10-29 00:00:00.000",
+ "requiredDate": "1996-11-26 00:00:00.000",
+ "shippedDate": "1996-11-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 26.78,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 9,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10342,
+ "customerID": "FRANK",
+ "employeeID": 4,
+ "orderDate": "1996-10-30 00:00:00.000",
+ "requiredDate": "1996-11-13 00:00:00.000",
+ "shippedDate": "1996-11-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 54.83,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 24,
+ "discount": 0.2
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 56,
+ "discount": 0.2
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10343,
+ "customerID": "LEHMS",
+ "employeeID": 4,
+ "orderDate": "1996-10-31 00:00:00.000",
+ "requiredDate": "1996-11-28 00:00:00.000",
+ "shippedDate": "1996-11-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 110.37,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 4,
+ "discount": 0.05
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10344,
+ "customerID": "WHITC",
+ "employeeID": 4,
+ "orderDate": "1996-11-01 00:00:00.000",
+ "requiredDate": "1996-11-29 00:00:00.000",
+ "shippedDate": "1996-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 23.29,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 8,
+ "unitPrice": 32,
+ "quantity": 70,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10345,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1996-11-04 00:00:00.000",
+ "requiredDate": "1996-12-02 00:00:00.000",
+ "shippedDate": "1996-11-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 249.06,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 32,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 80,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10346,
+ "customerID": "RATTC",
+ "employeeID": 3,
+ "orderDate": "1996-11-05 00:00:00.000",
+ "requiredDate": "1996-12-17 00:00:00.000",
+ "shippedDate": "1996-11-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 142.08,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 36,
+ "discount": 0.1
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10347,
+ "customerID": "FAMIA",
+ "employeeID": 4,
+ "orderDate": "1996-11-06 00:00:00.000",
+ "requiredDate": "1996-12-04 00:00:00.000",
+ "shippedDate": "1996-11-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.1,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 50,
+ "discount": 0.15
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 6,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10348,
+ "customerID": "WANDK",
+ "employeeID": 4,
+ "orderDate": "1996-11-07 00:00:00.000",
+ "requiredDate": "1996-12-05 00:00:00.000",
+ "shippedDate": "1996-11-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.78,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10325,
+ "customerID": "KOENE",
+ "employeeID": 1,
+ "orderDate": "1996-10-09 00:00:00.000",
+ "requiredDate": "1996-10-23 00:00:00.000",
+ "shippedDate": "1996-10-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 64.86,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 6,
+ "unitPrice": 20,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10350,
+ "customerID": "LAMAI",
+ "employeeID": 6,
+ "orderDate": "1996-11-11 00:00:00.000",
+ "requiredDate": "1996-12-09 00:00:00.000",
+ "shippedDate": "1996-12-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 64.19,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 50,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 18,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10332,
+ "customerID": "MEREP",
+ "employeeID": 3,
+ "orderDate": "1996-10-17 00:00:00.000",
+ "requiredDate": "1996-11-28 00:00:00.000",
+ "shippedDate": "1996-10-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 52.84,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 47,
+ "unitPrice": 7.6,
+ "quantity": 16,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10351,
+ "customerID": "ERNSH",
+ "employeeID": 1,
+ "orderDate": "1996-11-11 00:00:00.000",
+ "requiredDate": "1996-12-09 00:00:00.000",
+ "shippedDate": "1996-11-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 162.33,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 13,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 77,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10355,
+ "customerID": "AROUT",
+ "employeeID": 6,
+ "orderDate": "1996-11-15 00:00:00.000",
+ "requiredDate": "1996-12-13 00:00:00.000",
+ "shippedDate": "1996-11-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 41.95,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10356,
+ "customerID": "WANDK",
+ "employeeID": 6,
+ "orderDate": "1996-11-18 00:00:00.000",
+ "requiredDate": "1996-12-16 00:00:00.000",
+ "shippedDate": "1996-11-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 36.71,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10357,
+ "customerID": "LILAS",
+ "employeeID": 1,
+ "orderDate": "1996-11-19 00:00:00.000",
+ "requiredDate": "1996-12-17 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 3,
+ "freight": 34.88,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 8,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10358,
+ "customerID": "LAMAI",
+ "employeeID": 5,
+ "orderDate": "1996-11-20 00:00:00.000",
+ "requiredDate": "1996-12-18 00:00:00.000",
+ "shippedDate": "1996-11-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 19.64,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10359,
+ "customerID": "SEVES",
+ "employeeID": 5,
+ "orderDate": "1996-11-21 00:00:00.000",
+ "requiredDate": "1996-12-19 00:00:00.000",
+ "shippedDate": "1996-11-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 288.43,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 56,
+ "discount": 0.05
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 70,
+ "discount": 0.05
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 80,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10360,
+ "customerID": "BLONP",
+ "employeeID": 4,
+ "orderDate": "1996-11-22 00:00:00.000",
+ "requiredDate": "1996-12-20 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 3,
+ "freight": 131.7,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10361,
+ "customerID": "QUICK",
+ "employeeID": 1,
+ "orderDate": "1996-11-22 00:00:00.000",
+ "requiredDate": "1996-12-20 00:00:00.000",
+ "shippedDate": "1996-12-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 183.17,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 54,
+ "discount": 0.1
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 55,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10353,
+ "customerID": "PICCO",
+ "employeeID": 7,
+ "orderDate": "1996-11-13 00:00:00.000",
+ "requiredDate": "1996-12-11 00:00:00.000",
+ "shippedDate": "1996-11-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 360.63,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10363,
+ "customerID": "DRACD",
+ "employeeID": 4,
+ "orderDate": "1996-11-26 00:00:00.000",
+ "requiredDate": "1996-12-24 00:00:00.000",
+ "shippedDate": "1996-12-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 30.54,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10352,
+ "customerID": "FURIB",
+ "employeeID": 3,
+ "orderDate": "1996-11-12 00:00:00.000",
+ "requiredDate": "1996-11-26 00:00:00.000",
+ "shippedDate": "1996-11-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.3,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10364,
+ "customerID": "EASTC",
+ "employeeID": 1,
+ "orderDate": "1996-11-26 00:00:00.000",
+ "requiredDate": "1997-01-07 00:00:00.000",
+ "shippedDate": "1996-12-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 71.97,
+ "shipName": "Eastern Connection",
+ "shipAddress": {
+ "street": "35 King George",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX3 6FW",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10354,
+ "customerID": "PERIC",
+ "employeeID": 8,
+ "orderDate": "1996-11-14 00:00:00.000",
+ "requiredDate": "1996-12-12 00:00:00.000",
+ "shippedDate": "1996-11-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 53.8,
+ "shipName": "Pericles Comidas clásicas",
+ "shipAddress": {
+ "street": "Calle Dr. Jorge Cash 321",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10362,
+ "customerID": "BONAP",
+ "employeeID": 3,
+ "orderDate": "1996-11-25 00:00:00.000",
+ "requiredDate": "1996-12-23 00:00:00.000",
+ "shippedDate": "1996-11-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 96.04,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10366,
+ "customerID": "GALED",
+ "employeeID": 8,
+ "orderDate": "1996-11-28 00:00:00.000",
+ "requiredDate": "1997-01-09 00:00:00.000",
+ "shippedDate": "1996-12-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 10.14,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10367,
+ "customerID": "VAFFE",
+ "employeeID": 7,
+ "orderDate": "1996-11-28 00:00:00.000",
+ "requiredDate": "1996-12-26 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.55,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10372,
+ "customerID": "QUEEN",
+ "employeeID": 5,
+ "orderDate": "1996-12-04 00:00:00.000",
+ "requiredDate": "1997-01-01 00:00:00.000",
+ "shippedDate": "1996-12-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 890.78,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 70,
+ "discount": 0.25
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 42,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10373,
+ "customerID": "HUNGO",
+ "employeeID": 4,
+ "orderDate": "1996-12-05 00:00:00.000",
+ "requiredDate": "1997-01-02 00:00:00.000",
+ "shippedDate": "1996-12-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 124.12,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 58,
+ "unitPrice": 10.6,
+ "quantity": 80,
+ "discount": 0.2
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10374,
+ "customerID": "WOLZA",
+ "employeeID": 1,
+ "orderDate": "1996-12-05 00:00:00.000",
+ "requiredDate": "1997-01-02 00:00:00.000",
+ "shippedDate": "1996-12-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.94,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 58,
+ "unitPrice": 10.6,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10375,
+ "customerID": "HUNGC",
+ "employeeID": 3,
+ "orderDate": "1996-12-06 00:00:00.000",
+ "requiredDate": "1997-01-03 00:00:00.000",
+ "shippedDate": "1996-12-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 20.12,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10368,
+ "customerID": "ERNSH",
+ "employeeID": 2,
+ "orderDate": "1996-11-29 00:00:00.000",
+ "requiredDate": "1996-12-27 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 101.95,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 5,
+ "discount": 0.1
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 13,
+ "discount": 0.1
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 35,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10369,
+ "customerID": "SPLIR",
+ "employeeID": 8,
+ "orderDate": "1996-12-02 00:00:00.000",
+ "requiredDate": "1996-12-30 00:00:00.000",
+ "shippedDate": "1996-12-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 195.68,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 18,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10379,
+ "customerID": "QUEDE",
+ "employeeID": 2,
+ "orderDate": "1996-12-11 00:00:00.000",
+ "requiredDate": "1997-01-08 00:00:00.000",
+ "shippedDate": "1996-12-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 45.03,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 16,
+ "discount": 0.1
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10370,
+ "customerID": "CHOPS",
+ "employeeID": 6,
+ "orderDate": "1996-12-03 00:00:00.000",
+ "requiredDate": "1996-12-31 00:00:00.000",
+ "shippedDate": "1996-12-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.17,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10380,
+ "customerID": "HUNGO",
+ "employeeID": 8,
+ "orderDate": "1996-12-12 00:00:00.000",
+ "requiredDate": "1997-01-09 00:00:00.000",
+ "shippedDate": "1997-01-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 35.03,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 6,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10377,
+ "customerID": "SEVES",
+ "employeeID": 1,
+ "orderDate": "1996-12-09 00:00:00.000",
+ "requiredDate": "1997-01-06 00:00:00.000",
+ "shippedDate": "1996-12-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 22.21,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10384,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1996-12-16 00:00:00.000",
+ "requiredDate": "1997-01-13 00:00:00.000",
+ "shippedDate": "1996-12-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 168.64,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10385,
+ "customerID": "SPLIR",
+ "employeeID": 1,
+ "orderDate": "1996-12-17 00:00:00.000",
+ "requiredDate": "1997-01-14 00:00:00.000",
+ "shippedDate": "1996-12-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 30.96,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 24,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 8,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10386,
+ "customerID": "FAMIA",
+ "employeeID": 9,
+ "orderDate": "1996-12-18 00:00:00.000",
+ "requiredDate": "1997-01-01 00:00:00.000",
+ "shippedDate": "1996-12-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.99,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10387,
+ "customerID": "SANTG",
+ "employeeID": 1,
+ "orderDate": "1996-12-18 00:00:00.000",
+ "requiredDate": "1997-01-15 00:00:00.000",
+ "shippedDate": "1996-12-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 93.63,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10388,
+ "customerID": "SEVES",
+ "employeeID": 2,
+ "orderDate": "1996-12-19 00:00:00.000",
+ "requiredDate": "1997-01-16 00:00:00.000",
+ "shippedDate": "1996-12-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 34.86,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 7.6,
+ "quantity": 15,
+ "discount": 0.2
+ },
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10389,
+ "customerID": "BOTTM",
+ "employeeID": 4,
+ "orderDate": "1996-12-20 00:00:00.000",
+ "requiredDate": "1997-01-17 00:00:00.000",
+ "shippedDate": "1996-12-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 47.42,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10382,
+ "customerID": "ERNSH",
+ "employeeID": 4,
+ "orderDate": "1996-12-13 00:00:00.000",
+ "requiredDate": "1997-01-10 00:00:00.000",
+ "shippedDate": "1996-12-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 94.77,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 5,
+ "unitPrice": 17,
+ "quantity": 32,
+ "discount": 0
+ },
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10381,
+ "customerID": "LILAS",
+ "employeeID": 3,
+ "orderDate": "1996-12-12 00:00:00.000",
+ "requiredDate": "1997-01-09 00:00:00.000",
+ "shippedDate": "1996-12-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7.99,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10383,
+ "customerID": "AROUT",
+ "employeeID": 8,
+ "orderDate": "1996-12-16 00:00:00.000",
+ "requiredDate": "1997-01-13 00:00:00.000",
+ "shippedDate": "1996-12-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 34.24,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 50,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10390,
+ "customerID": "ERNSH",
+ "employeeID": 6,
+ "orderDate": "1996-12-23 00:00:00.000",
+ "requiredDate": "1997-01-20 00:00:00.000",
+ "shippedDate": "1996-12-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 126.38,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0.1
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 24,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10396,
+ "customerID": "FRANK",
+ "employeeID": 1,
+ "orderDate": "1996-12-27 00:00:00.000",
+ "requiredDate": "1997-01-10 00:00:00.000",
+ "shippedDate": "1997-01-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 135.35,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10397,
+ "customerID": "PRINI",
+ "employeeID": 5,
+ "orderDate": "1996-12-27 00:00:00.000",
+ "requiredDate": "1997-01-24 00:00:00.000",
+ "shippedDate": "1997-01-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 60.26,
+ "shipName": "Princesa Isabel Vinhos",
+ "shipAddress": {
+ "street": "Estrada da saúde n. 58",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1756,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 10,
+ "discount": 0.15
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 18,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10398,
+ "customerID": "SAVEA",
+ "employeeID": 2,
+ "orderDate": "1996-12-30 00:00:00.000",
+ "requiredDate": "1997-01-27 00:00:00.000",
+ "shippedDate": "1997-01-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 89.16,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 120,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10399,
+ "customerID": "VAFFE",
+ "employeeID": 8,
+ "orderDate": "1996-12-31 00:00:00.000",
+ "requiredDate": "1997-01-14 00:00:00.000",
+ "shippedDate": "1997-01-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 27.36,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10400,
+ "customerID": "EASTC",
+ "employeeID": 1,
+ "orderDate": "1997-01-01 00:00:00.000",
+ "requiredDate": "1997-01-29 00:00:00.000",
+ "shippedDate": "1997-01-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 83.93,
+ "shipName": "Eastern Connection",
+ "shipAddress": {
+ "street": "35 King George",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX3 6FW",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10401,
+ "customerID": "RATTC",
+ "employeeID": 1,
+ "orderDate": "1997-01-01 00:00:00.000",
+ "requiredDate": "1997-01-29 00:00:00.000",
+ "shippedDate": "1997-01-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.51,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10394,
+ "customerID": "HUNGC",
+ "employeeID": 1,
+ "orderDate": "1996-12-25 00:00:00.000",
+ "requiredDate": "1997-01-22 00:00:00.000",
+ "shippedDate": "1997-01-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 30.34,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10402,
+ "customerID": "ERNSH",
+ "employeeID": 8,
+ "orderDate": "1997-01-02 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-01-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 67.88,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 65,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10393,
+ "customerID": "SAVEA",
+ "employeeID": 1,
+ "orderDate": "1996-12-25 00:00:00.000",
+ "requiredDate": "1997-01-22 00:00:00.000",
+ "shippedDate": "1997-01-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 126.56,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 70,
+ "discount": 0.25
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 32,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 7,
+ "discount": 0.25
+ },
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 25,
+ "discount": 0.25
+ },
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 42,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10395,
+ "customerID": "HILAA",
+ "employeeID": 6,
+ "orderDate": "1996-12-26 00:00:00.000",
+ "requiredDate": "1997-01-23 00:00:00.000",
+ "shippedDate": "1997-01-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 184.41,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 28,
+ "discount": 0.1
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 70,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10406,
+ "customerID": "QUEEN",
+ "employeeID": 7,
+ "orderDate": "1997-01-07 00:00:00.000",
+ "requiredDate": "1997-02-18 00:00:00.000",
+ "shippedDate": "1997-01-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 108.04,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 42,
+ "discount": 0.1
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 5,
+ "discount": 0.1
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 2,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10407,
+ "customerID": "OTTIK",
+ "employeeID": 2,
+ "orderDate": "1997-01-07 00:00:00.000",
+ "requiredDate": "1997-02-04 00:00:00.000",
+ "shippedDate": "1997-01-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 91.48,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10408,
+ "customerID": "FOLIG",
+ "employeeID": 8,
+ "orderDate": "1997-01-08 00:00:00.000",
+ "requiredDate": "1997-02-05 00:00:00.000",
+ "shippedDate": "1997-01-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.26,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 37,
+ "unitPrice": 20.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10409,
+ "customerID": "OCEAN",
+ "employeeID": 3,
+ "orderDate": "1997-01-09 00:00:00.000",
+ "requiredDate": "1997-02-06 00:00:00.000",
+ "shippedDate": "1997-01-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 29.83,
+ "shipName": "Océano Atlántico Ltda.",
+ "shipAddress": {
+ "street": "Ing. Gustavo Moncada 8585 Piso 20-A",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10410,
+ "customerID": "BOTTM",
+ "employeeID": 3,
+ "orderDate": "1997-01-10 00:00:00.000",
+ "requiredDate": "1997-02-07 00:00:00.000",
+ "shippedDate": "1997-01-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 2.4,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 49,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10411,
+ "customerID": "BOTTM",
+ "employeeID": 9,
+ "orderDate": "1997-01-10 00:00:00.000",
+ "requiredDate": "1997-02-07 00:00:00.000",
+ "shippedDate": "1997-01-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 23.65,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 9,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10404,
+ "customerID": "MAGAA",
+ "employeeID": 2,
+ "orderDate": "1997-01-03 00:00:00.000",
+ "requiredDate": "1997-01-31 00:00:00.000",
+ "shippedDate": "1997-01-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 155.97,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 40,
+ "discount": 0.05
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 30,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10413,
+ "customerID": "LAMAI",
+ "employeeID": 3,
+ "orderDate": "1997-01-14 00:00:00.000",
+ "requiredDate": "1997-02-11 00:00:00.000",
+ "shippedDate": "1997-01-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 95.66,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10403,
+ "customerID": "ERNSH",
+ "employeeID": 4,
+ "orderDate": "1997-01-03 00:00:00.000",
+ "requiredDate": "1997-01-31 00:00:00.000",
+ "shippedDate": "1997-01-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 73.79,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 21,
+ "discount": 0.15
+ },
+ {
+ "productID": 48,
+ "unitPrice": 10.2,
+ "quantity": 70,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10414,
+ "customerID": "FAMIA",
+ "employeeID": 2,
+ "orderDate": "1997-01-14 00:00:00.000",
+ "requiredDate": "1997-02-11 00:00:00.000",
+ "shippedDate": "1997-01-17 00:00:00.000",
+ "shipVia": 3,
+ "freight": 21.48,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 18,
+ "discount": 0.05
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10415,
+ "customerID": "HUNGC",
+ "employeeID": 3,
+ "orderDate": "1997-01-15 00:00:00.000",
+ "requiredDate": "1997-02-12 00:00:00.000",
+ "shippedDate": "1997-01-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.2,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10419,
+ "customerID": "RICSU",
+ "employeeID": 4,
+ "orderDate": "1997-01-20 00:00:00.000",
+ "requiredDate": "1997-02-17 00:00:00.000",
+ "shippedDate": "1997-01-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 137.35,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10420,
+ "customerID": "WELLI",
+ "employeeID": 3,
+ "orderDate": "1997-01-21 00:00:00.000",
+ "requiredDate": "1997-02-18 00:00:00.000",
+ "shippedDate": "1997-01-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 44.12,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 77.6,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 2,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 73,
+ "unitPrice": 12,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10421,
+ "customerID": "QUEDE",
+ "employeeID": 8,
+ "orderDate": "1997-01-21 00:00:00.000",
+ "requiredDate": "1997-03-04 00:00:00.000",
+ "shippedDate": "1997-01-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 99.23,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 4,
+ "discount": 0.15
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 10,
+ "discount": 0.15
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10423,
+ "customerID": "GOURL",
+ "employeeID": 6,
+ "orderDate": "1997-01-23 00:00:00.000",
+ "requiredDate": "1997-02-06 00:00:00.000",
+ "shippedDate": "1997-02-24 00:00:00.000",
+ "shipVia": 3,
+ "freight": 24.5,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10424,
+ "customerID": "MEREP",
+ "employeeID": 7,
+ "orderDate": "1997-01-23 00:00:00.000",
+ "requiredDate": "1997-02-20 00:00:00.000",
+ "shippedDate": "1997-01-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 370.61,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 49,
+ "discount": 0.2
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 60,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10418,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1997-01-17 00:00:00.000",
+ "requiredDate": "1997-02-14 00:00:00.000",
+ "shippedDate": "1997-01-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 17.55,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 7.6,
+ "quantity": 55,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 22.8,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10417,
+ "customerID": "SIMOB",
+ "employeeID": 4,
+ "orderDate": "1997-01-16 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-01-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 70.29,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 2,
+ "discount": 0.25
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 36,
+ "discount": 0.25
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10416,
+ "customerID": "WARTH",
+ "employeeID": 8,
+ "orderDate": "1997-01-16 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-01-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 22.72,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10425,
+ "customerID": "LAMAI",
+ "employeeID": 6,
+ "orderDate": "1997-01-24 00:00:00.000",
+ "requiredDate": "1997-02-21 00:00:00.000",
+ "shippedDate": "1997-02-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.93,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 10,
+ "discount": 0.25
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10429,
+ "customerID": "HUNGO",
+ "employeeID": 3,
+ "orderDate": "1997-01-29 00:00:00.000",
+ "requiredDate": "1997-03-12 00:00:00.000",
+ "shippedDate": "1997-02-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 56.63,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 50,
+ "unitPrice": 13,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10430,
+ "customerID": "ERNSH",
+ "employeeID": 4,
+ "orderDate": "1997-01-30 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-02-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 458.78,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 45,
+ "discount": 0.2
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 70,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10431,
+ "customerID": "BOTTM",
+ "employeeID": 4,
+ "orderDate": "1997-01-30 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-02-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 44.17,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 47,
+ "unitPrice": 7.6,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10432,
+ "customerID": "SPLIR",
+ "employeeID": 3,
+ "orderDate": "1997-01-31 00:00:00.000",
+ "requiredDate": "1997-02-14 00:00:00.000",
+ "shippedDate": "1997-02-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.34,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10434,
+ "customerID": "FOLKO",
+ "employeeID": 3,
+ "orderDate": "1997-02-03 00:00:00.000",
+ "requiredDate": "1997-03-03 00:00:00.000",
+ "shippedDate": "1997-02-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 17.92,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 18,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10436,
+ "customerID": "BLONP",
+ "employeeID": 3,
+ "orderDate": "1997-02-05 00:00:00.000",
+ "requiredDate": "1997-03-05 00:00:00.000",
+ "shippedDate": "1997-02-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 156.66,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 24,
+ "discount": 0.1
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 30,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10435,
+ "customerID": "CONSH",
+ "employeeID": 8,
+ "orderDate": "1997-02-04 00:00:00.000",
+ "requiredDate": "1997-03-18 00:00:00.000",
+ "shippedDate": "1997-02-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 9.21,
+ "shipName": "Consolidated Holdings",
+ "shipAddress": {
+ "street": "Berkeley Gardens 12 Brewery",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX1 6LT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 16.8,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10426,
+ "customerID": "GALED",
+ "employeeID": 4,
+ "orderDate": "1997-01-27 00:00:00.000",
+ "requiredDate": "1997-02-24 00:00:00.000",
+ "shippedDate": "1997-02-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 18.69,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10442,
+ "customerID": "ERNSH",
+ "employeeID": 3,
+ "orderDate": "1997-02-11 00:00:00.000",
+ "requiredDate": "1997-03-11 00:00:00.000",
+ "shippedDate": "1997-02-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 47.94,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 80,
+ "discount": 0
+ },
+ {
+ "productID": 66,
+ "unitPrice": 13.6,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10443,
+ "customerID": "REGGC",
+ "employeeID": 8,
+ "orderDate": "1997-02-12 00:00:00.000",
+ "requiredDate": "1997-03-12 00:00:00.000",
+ "shippedDate": "1997-02-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 13.95,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 6,
+ "discount": 0.2
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10444,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1997-02-12 00:00:00.000",
+ "requiredDate": "1997-03-12 00:00:00.000",
+ "shippedDate": "1997-02-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.5,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10445,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1997-02-13 00:00:00.000",
+ "requiredDate": "1997-03-13 00:00:00.000",
+ "shippedDate": "1997-02-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 9.3,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10446,
+ "customerID": "TOMSP",
+ "employeeID": 6,
+ "orderDate": "1997-02-14 00:00:00.000",
+ "requiredDate": "1997-03-14 00:00:00.000",
+ "shippedDate": "1997-02-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 14.68,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 3,
+ "discount": 0.1
+ },
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 12,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10440,
+ "customerID": "SAVEA",
+ "employeeID": 4,
+ "orderDate": "1997-02-10 00:00:00.000",
+ "requiredDate": "1997-03-10 00:00:00.000",
+ "shippedDate": "1997-02-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 86.53,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 45,
+ "discount": 0.15
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 49,
+ "discount": 0.15
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 24,
+ "discount": 0.15
+ },
+ {
+ "productID": 61,
+ "unitPrice": 22.8,
+ "quantity": 90,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10439,
+ "customerID": "MEREP",
+ "employeeID": 6,
+ "orderDate": "1997-02-07 00:00:00.000",
+ "requiredDate": "1997-03-07 00:00:00.000",
+ "shippedDate": "1997-02-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.07,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 30.4,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10448,
+ "customerID": "RANCH",
+ "employeeID": 4,
+ "orderDate": "1997-02-17 00:00:00.000",
+ "requiredDate": "1997-03-17 00:00:00.000",
+ "shippedDate": "1997-02-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 38.82,
+ "shipName": "Rancho grande",
+ "shipAddress": {
+ "street": "Av. del Libertador 900",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10438,
+ "customerID": "TOMSP",
+ "employeeID": 3,
+ "orderDate": "1997-02-06 00:00:00.000",
+ "requiredDate": "1997-03-06 00:00:00.000",
+ "shippedDate": "1997-02-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.24,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 15,
+ "discount": 0.2
+ },
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 15,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10447,
+ "customerID": "RICAR",
+ "employeeID": 4,
+ "orderDate": "1997-02-14 00:00:00.000",
+ "requiredDate": "1997-03-14 00:00:00.000",
+ "shippedDate": "1997-03-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 68.66,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10452,
+ "customerID": "SAVEA",
+ "employeeID": 8,
+ "orderDate": "1997-02-20 00:00:00.000",
+ "requiredDate": "1997-03-20 00:00:00.000",
+ "shippedDate": "1997-02-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 140.26,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 100,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10453,
+ "customerID": "AROUT",
+ "employeeID": 1,
+ "orderDate": "1997-02-21 00:00:00.000",
+ "requiredDate": "1997-03-21 00:00:00.000",
+ "shippedDate": "1997-02-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.36,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 48,
+ "unitPrice": 10.2,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 25,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10454,
+ "customerID": "LAMAI",
+ "employeeID": 4,
+ "orderDate": "1997-02-21 00:00:00.000",
+ "requiredDate": "1997-03-21 00:00:00.000",
+ "shippedDate": "1997-02-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 2.74,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10455,
+ "customerID": "WARTH",
+ "employeeID": 8,
+ "orderDate": "1997-02-24 00:00:00.000",
+ "requiredDate": "1997-04-07 00:00:00.000",
+ "shippedDate": "1997-03-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 180.45,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 22.8,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10456,
+ "customerID": "KOENE",
+ "employeeID": 8,
+ "orderDate": "1997-02-25 00:00:00.000",
+ "requiredDate": "1997-04-08 00:00:00.000",
+ "shippedDate": "1997-02-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.12,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 21,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10450,
+ "customerID": "VICTE",
+ "employeeID": 8,
+ "orderDate": "1997-02-19 00:00:00.000",
+ "requiredDate": "1997-03-19 00:00:00.000",
+ "shippedDate": "1997-03-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.23,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 6,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10451,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1997-02-19 00:00:00.000",
+ "requiredDate": "1997-03-05 00:00:00.000",
+ "shippedDate": "1997-03-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 189.09,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 120,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 35,
+ "discount": 0.1
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 28,
+ "discount": 0.1
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 55,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10449,
+ "customerID": "BLONP",
+ "employeeID": 3,
+ "orderDate": "1997-02-18 00:00:00.000",
+ "requiredDate": "1997-03-18 00:00:00.000",
+ "shippedDate": "1997-02-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 53.3,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10461,
+ "customerID": "LILAS",
+ "employeeID": 1,
+ "orderDate": "1997-02-28 00:00:00.000",
+ "requiredDate": "1997-03-28 00:00:00.000",
+ "shippedDate": "1997-03-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 148.61,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 28,
+ "discount": 0.25
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 60,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10462,
+ "customerID": "CONSH",
+ "employeeID": 2,
+ "orderDate": "1997-03-03 00:00:00.000",
+ "requiredDate": "1997-03-31 00:00:00.000",
+ "shippedDate": "1997-03-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 6.17,
+ "shipName": "Consolidated Holdings",
+ "shipAddress": {
+ "street": "Berkeley Gardens 12 Brewery",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX1 6LT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 1,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10463,
+ "customerID": "SUPRD",
+ "employeeID": 5,
+ "orderDate": "1997-03-04 00:00:00.000",
+ "requiredDate": "1997-04-01 00:00:00.000",
+ "shippedDate": "1997-03-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 14.78,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10464,
+ "customerID": "FURIB",
+ "employeeID": 4,
+ "orderDate": "1997-03-04 00:00:00.000",
+ "requiredDate": "1997-04-01 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 89,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 16,
+ "discount": 0.2
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10465,
+ "customerID": "VAFFE",
+ "employeeID": 1,
+ "orderDate": "1997-03-05 00:00:00.000",
+ "requiredDate": "1997-04-02 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 145.04,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 45,
+ "unitPrice": 7.6,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 50,
+ "unitPrice": 13,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10466,
+ "customerID": "COMMI",
+ "employeeID": 4,
+ "orderDate": "1997-03-06 00:00:00.000",
+ "requiredDate": "1997-04-03 00:00:00.000",
+ "shippedDate": "1997-03-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.93,
+ "shipName": "Comércio Mineiro",
+ "shipAddress": {
+ "street": "Av. dos Lusíadas 23",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05432-043",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10460,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1997-02-28 00:00:00.000",
+ "requiredDate": "1997-03-28 00:00:00.000",
+ "shippedDate": "1997-03-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.27,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 4,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10459,
+ "customerID": "VICTE",
+ "employeeID": 4,
+ "orderDate": "1997-02-27 00:00:00.000",
+ "requiredDate": "1997-03-27 00:00:00.000",
+ "shippedDate": "1997-02-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.09,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 24,
+ "quantity": 16,
+ "discount": 0.05
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10468,
+ "customerID": "KOENE",
+ "employeeID": 3,
+ "orderDate": "1997-03-07 00:00:00.000",
+ "requiredDate": "1997-04-04 00:00:00.000",
+ "shippedDate": "1997-03-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 44.12,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10469,
+ "customerID": "WHITC",
+ "employeeID": 1,
+ "orderDate": "1997-03-10 00:00:00.000",
+ "requiredDate": "1997-04-07 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 60.18,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 2,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10458,
+ "customerID": "SUPRD",
+ "employeeID": 7,
+ "orderDate": "1997-02-26 00:00:00.000",
+ "requiredDate": "1997-03-26 00:00:00.000",
+ "shippedDate": "1997-03-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 147.06,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10470,
+ "customerID": "BONAP",
+ "employeeID": 4,
+ "orderDate": "1997-03-11 00:00:00.000",
+ "requiredDate": "1997-04-08 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 64.56,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10467,
+ "customerID": "MAGAA",
+ "employeeID": 8,
+ "orderDate": "1997-03-06 00:00:00.000",
+ "requiredDate": "1997-04-03 00:00:00.000",
+ "shippedDate": "1997-03-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.93,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10474,
+ "customerID": "PERIC",
+ "employeeID": 5,
+ "orderDate": "1997-03-13 00:00:00.000",
+ "requiredDate": "1997-04-10 00:00:00.000",
+ "shippedDate": "1997-03-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 83.49,
+ "shipName": "Pericles Comidas clásicas",
+ "shipAddress": {
+ "street": "Calle Dr. Jorge Cash 321",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10475,
+ "customerID": "SUPRD",
+ "employeeID": 9,
+ "orderDate": "1997-03-14 00:00:00.000",
+ "requiredDate": "1997-04-11 00:00:00.000",
+ "shippedDate": "1997-04-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 68.52,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 66,
+ "unitPrice": 13.6,
+ "quantity": 60,
+ "discount": 0.15
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 42,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10476,
+ "customerID": "HILAA",
+ "employeeID": 8,
+ "orderDate": "1997-03-17 00:00:00.000",
+ "requiredDate": "1997-04-14 00:00:00.000",
+ "shippedDate": "1997-03-24 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.41,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 2,
+ "discount": 0.05
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10477,
+ "customerID": "PRINI",
+ "employeeID": 5,
+ "orderDate": "1997-03-17 00:00:00.000",
+ "requiredDate": "1997-04-14 00:00:00.000",
+ "shippedDate": "1997-03-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.02,
+ "shipName": "Princesa Isabel Vinhos",
+ "shipAddress": {
+ "street": "Estrada da saúde n. 58",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1756,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10479,
+ "customerID": "RATTC",
+ "employeeID": 3,
+ "orderDate": "1997-03-19 00:00:00.000",
+ "requiredDate": "1997-04-16 00:00:00.000",
+ "shippedDate": "1997-03-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 708.95,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10471,
+ "customerID": "BSBEV",
+ "employeeID": 2,
+ "orderDate": "1997-03-11 00:00:00.000",
+ "requiredDate": "1997-04-08 00:00:00.000",
+ "shippedDate": "1997-03-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 45.59,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 24,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10472,
+ "customerID": "SEVES",
+ "employeeID": 8,
+ "orderDate": "1997-03-12 00:00:00.000",
+ "requiredDate": "1997-04-09 00:00:00.000",
+ "shippedDate": "1997-03-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.2,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 80,
+ "discount": 0.05
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10481,
+ "customerID": "RICAR",
+ "employeeID": 8,
+ "orderDate": "1997-03-20 00:00:00.000",
+ "requiredDate": "1997-04-17 00:00:00.000",
+ "shippedDate": "1997-03-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 64.33,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10473,
+ "customerID": "ISLAT",
+ "employeeID": 1,
+ "orderDate": "1997-03-13 00:00:00.000",
+ "requiredDate": "1997-03-27 00:00:00.000",
+ "shippedDate": "1997-03-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 16.37,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10484,
+ "customerID": "BSBEV",
+ "employeeID": 3,
+ "orderDate": "1997-03-24 00:00:00.000",
+ "requiredDate": "1997-04-21 00:00:00.000",
+ "shippedDate": "1997-04-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 6.88,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10485,
+ "customerID": "LINOD",
+ "employeeID": 4,
+ "orderDate": "1997-03-25 00:00:00.000",
+ "requiredDate": "1997-04-08 00:00:00.000",
+ "shippedDate": "1997-03-31 00:00:00.000",
+ "shipVia": 2,
+ "freight": 64.45,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 3,
+ "unitPrice": 8,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 60,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10486,
+ "customerID": "HILAA",
+ "employeeID": 1,
+ "orderDate": "1997-03-26 00:00:00.000",
+ "requiredDate": "1997-04-23 00:00:00.000",
+ "shippedDate": "1997-04-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 30.53,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10487,
+ "customerID": "QUEEN",
+ "employeeID": 2,
+ "orderDate": "1997-03-26 00:00:00.000",
+ "requiredDate": "1997-04-23 00:00:00.000",
+ "shippedDate": "1997-03-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 71.07,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 24,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10488,
+ "customerID": "FRANK",
+ "employeeID": 8,
+ "orderDate": "1997-03-27 00:00:00.000",
+ "requiredDate": "1997-04-24 00:00:00.000",
+ "shippedDate": "1997-04-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.93,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 12,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10489,
+ "customerID": "PICCO",
+ "employeeID": 6,
+ "orderDate": "1997-03-28 00:00:00.000",
+ "requiredDate": "1997-04-25 00:00:00.000",
+ "shippedDate": "1997-04-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 5.29,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10483,
+ "customerID": "WHITC",
+ "employeeID": 7,
+ "orderDate": "1997-03-24 00:00:00.000",
+ "requiredDate": "1997-04-21 00:00:00.000",
+ "shippedDate": "1997-04-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 15.28,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 35,
+ "discount": 0.05
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 30,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10491,
+ "customerID": "FURIB",
+ "employeeID": 8,
+ "orderDate": "1997-03-31 00:00:00.000",
+ "requiredDate": "1997-04-28 00:00:00.000",
+ "shippedDate": "1997-04-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 16.96,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 7,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10480,
+ "customerID": "FOLIG",
+ "employeeID": 6,
+ "orderDate": "1997-03-20 00:00:00.000",
+ "requiredDate": "1997-04-17 00:00:00.000",
+ "shippedDate": "1997-03-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.35,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 7.6,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10490,
+ "customerID": "HILAA",
+ "employeeID": 7,
+ "orderDate": "1997-03-31 00:00:00.000",
+ "requiredDate": "1997-04-28 00:00:00.000",
+ "shippedDate": "1997-04-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 210.19,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 36,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10492,
+ "customerID": "BOTTM",
+ "employeeID": 3,
+ "orderDate": "1997-04-01 00:00:00.000",
+ "requiredDate": "1997-04-29 00:00:00.000",
+ "shippedDate": "1997-04-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 62.89,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10493,
+ "customerID": "LAMAI",
+ "employeeID": 4,
+ "orderDate": "1997-04-02 00:00:00.000",
+ "requiredDate": "1997-04-30 00:00:00.000",
+ "shippedDate": "1997-04-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 10.64,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 66,
+ "unitPrice": 13.6,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10498,
+ "customerID": "HILAA",
+ "employeeID": 8,
+ "orderDate": "1997-04-07 00:00:00.000",
+ "requiredDate": "1997-05-05 00:00:00.000",
+ "shippedDate": "1997-04-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 29.75,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10499,
+ "customerID": "LILAS",
+ "employeeID": 4,
+ "orderDate": "1997-04-08 00:00:00.000",
+ "requiredDate": "1997-05-06 00:00:00.000",
+ "shippedDate": "1997-04-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 102.02,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10500,
+ "customerID": "LAMAI",
+ "employeeID": 6,
+ "orderDate": "1997-04-09 00:00:00.000",
+ "requiredDate": "1997-05-07 00:00:00.000",
+ "shippedDate": "1997-04-17 00:00:00.000",
+ "shipVia": 1,
+ "freight": 42.68,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 15.5,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 8,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10502,
+ "customerID": "PERIC",
+ "employeeID": 2,
+ "orderDate": "1997-04-10 00:00:00.000",
+ "requiredDate": "1997-05-08 00:00:00.000",
+ "shippedDate": "1997-04-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 69.32,
+ "shipName": "Pericles Comidas clásicas",
+ "shipAddress": {
+ "street": "Calle Dr. Jorge Cash 321",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10503,
+ "customerID": "HUNGO",
+ "employeeID": 6,
+ "orderDate": "1997-04-11 00:00:00.000",
+ "requiredDate": "1997-05-09 00:00:00.000",
+ "shippedDate": "1997-04-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 16.74,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10497,
+ "customerID": "LEHMS",
+ "employeeID": 7,
+ "orderDate": "1997-04-04 00:00:00.000",
+ "requiredDate": "1997-05-02 00:00:00.000",
+ "shippedDate": "1997-04-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 36.21,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10495,
+ "customerID": "LAUGB",
+ "employeeID": 3,
+ "orderDate": "1997-04-03 00:00:00.000",
+ "requiredDate": "1997-05-01 00:00:00.000",
+ "shippedDate": "1997-04-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.65,
+ "shipName": "Laughing Bacchus Wine Cellars",
+ "shipAddress": {
+ "street": "2319 Elm St.",
+ "city": "Vancouver",
+ "region": "BC",
+ "postalCode": "V3F 2K1",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10504,
+ "customerID": "WHITC",
+ "employeeID": 4,
+ "orderDate": "1997-04-11 00:00:00.000",
+ "requiredDate": "1997-05-09 00:00:00.000",
+ "shippedDate": "1997-04-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 59.13,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10508,
+ "customerID": "OTTIK",
+ "employeeID": 1,
+ "orderDate": "1997-04-16 00:00:00.000",
+ "requiredDate": "1997-05-14 00:00:00.000",
+ "shippedDate": "1997-05-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.99,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10510,
+ "customerID": "SAVEA",
+ "employeeID": 6,
+ "orderDate": "1997-04-18 00:00:00.000",
+ "requiredDate": "1997-05-16 00:00:00.000",
+ "shippedDate": "1997-04-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 367.63,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 36,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10511,
+ "customerID": "BONAP",
+ "employeeID": 4,
+ "orderDate": "1997-04-18 00:00:00.000",
+ "requiredDate": "1997-05-16 00:00:00.000",
+ "shippedDate": "1997-04-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 350.64,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 50,
+ "discount": 0.15
+ },
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 50,
+ "discount": 0.15
+ },
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 10,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10512,
+ "customerID": "FAMIA",
+ "employeeID": 7,
+ "orderDate": "1997-04-21 00:00:00.000",
+ "requiredDate": "1997-05-19 00:00:00.000",
+ "shippedDate": "1997-04-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.53,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 10,
+ "discount": 0.15
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 9,
+ "discount": 0.15
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 6,
+ "discount": 0.15
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 12,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10513,
+ "customerID": "WANDK",
+ "employeeID": 7,
+ "orderDate": "1997-04-22 00:00:00.000",
+ "requiredDate": "1997-06-03 00:00:00.000",
+ "shippedDate": "1997-04-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 105.65,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 50,
+ "discount": 0.2
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 15,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10506,
+ "customerID": "KOENE",
+ "employeeID": 9,
+ "orderDate": "1997-04-15 00:00:00.000",
+ "requiredDate": "1997-05-13 00:00:00.000",
+ "shippedDate": "1997-05-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 21.19,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 14,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10515,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1997-04-23 00:00:00.000",
+ "requiredDate": "1997-05-07 00:00:00.000",
+ "shippedDate": "1997-05-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 204.47,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 97,
+ "quantity": 16,
+ "discount": 0.15
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 120,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 16,
+ "discount": 0.15
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 84,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10516,
+ "customerID": "HUNGO",
+ "employeeID": 2,
+ "orderDate": "1997-04-24 00:00:00.000",
+ "requiredDate": "1997-05-22 00:00:00.000",
+ "shippedDate": "1997-05-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 62.78,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 80,
+ "discount": 0.1
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10507,
+ "customerID": "ANTON",
+ "employeeID": 7,
+ "orderDate": "1997-04-15 00:00:00.000",
+ "requiredDate": "1997-05-13 00:00:00.000",
+ "shippedDate": "1997-04-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 47.45,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 48,
+ "unitPrice": 12.75,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10514,
+ "customerID": "ERNSH",
+ "employeeID": 3,
+ "orderDate": "1997-04-22 00:00:00.000",
+ "requiredDate": "1997-05-20 00:00:00.000",
+ "shippedDate": "1997-05-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 789.95,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 39,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 39,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 70,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10517,
+ "customerID": "NORTS",
+ "employeeID": 3,
+ "orderDate": "1997-04-24 00:00:00.000",
+ "requiredDate": "1997-05-22 00:00:00.000",
+ "shippedDate": "1997-04-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 32.07,
+ "shipName": "North/South",
+ "shipAddress": {
+ "street": "South House 300 Queensbridge",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "SW7 1RZ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10518,
+ "customerID": "TORTU",
+ "employeeID": 4,
+ "orderDate": "1997-04-25 00:00:00.000",
+ "requiredDate": "1997-05-09 00:00:00.000",
+ "shippedDate": "1997-05-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 218.15,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10519,
+ "customerID": "CHOPS",
+ "employeeID": 6,
+ "orderDate": "1997-04-28 00:00:00.000",
+ "requiredDate": "1997-05-26 00:00:00.000",
+ "shippedDate": "1997-05-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 91.76,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 16,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10520,
+ "customerID": "SANTG",
+ "employeeID": 7,
+ "orderDate": "1997-04-29 00:00:00.000",
+ "requiredDate": "1997-05-27 00:00:00.000",
+ "shippedDate": "1997-05-01 00:00:00.000",
+ "shipVia": 1,
+ "freight": 13.37,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10521,
+ "customerID": "CACTU",
+ "employeeID": 8,
+ "orderDate": "1997-04-29 00:00:00.000",
+ "requiredDate": "1997-05-27 00:00:00.000",
+ "shippedDate": "1997-05-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 17.22,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10522,
+ "customerID": "LEHMS",
+ "employeeID": 4,
+ "orderDate": "1997-04-30 00:00:00.000",
+ "requiredDate": "1997-05-28 00:00:00.000",
+ "shippedDate": "1997-05-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 45.33,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10523,
+ "customerID": "SEVES",
+ "employeeID": 7,
+ "orderDate": "1997-05-01 00:00:00.000",
+ "requiredDate": "1997-05-29 00:00:00.000",
+ "shippedDate": "1997-05-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 77.63,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 37,
+ "unitPrice": 26,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 6,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10524,
+ "customerID": "BERGS",
+ "employeeID": 1,
+ "orderDate": "1997-05-01 00:00:00.000",
+ "requiredDate": "1997-05-29 00:00:00.000",
+ "shippedDate": "1997-05-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 244.79,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10525,
+ "customerID": "BONAP",
+ "employeeID": 1,
+ "orderDate": "1997-05-02 00:00:00.000",
+ "requiredDate": "1997-05-30 00:00:00.000",
+ "shippedDate": "1997-05-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 11.06,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10526,
+ "customerID": "WARTH",
+ "employeeID": 4,
+ "orderDate": "1997-05-05 00:00:00.000",
+ "requiredDate": "1997-06-02 00:00:00.000",
+ "shippedDate": "1997-05-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.59,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 8,
+ "discount": 0.15
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10527,
+ "customerID": "QUICK",
+ "employeeID": 7,
+ "orderDate": "1997-05-05 00:00:00.000",
+ "requiredDate": "1997-06-02 00:00:00.000",
+ "shippedDate": "1997-05-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 41.9,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 50,
+ "discount": 0.1
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10528,
+ "customerID": "GREAL",
+ "employeeID": 6,
+ "orderDate": "1997-05-06 00:00:00.000",
+ "requiredDate": "1997-05-20 00:00:00.000",
+ "shippedDate": "1997-05-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.35,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 8,
+ "discount": 0.2
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10529,
+ "customerID": "MAISD",
+ "employeeID": 5,
+ "orderDate": "1997-05-07 00:00:00.000",
+ "requiredDate": "1997-06-04 00:00:00.000",
+ "shippedDate": "1997-05-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 66.69,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10530,
+ "customerID": "PICCO",
+ "employeeID": 3,
+ "orderDate": "1997-05-08 00:00:00.000",
+ "requiredDate": "1997-06-05 00:00:00.000",
+ "shippedDate": "1997-05-12 00:00:00.000",
+ "shipVia": 2,
+ "freight": 339.22,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10531,
+ "customerID": "OCEAN",
+ "employeeID": 7,
+ "orderDate": "1997-05-08 00:00:00.000",
+ "requiredDate": "1997-06-05 00:00:00.000",
+ "shippedDate": "1997-05-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.12,
+ "shipName": "Océano Atlántico Ltda.",
+ "shipAddress": {
+ "street": "Ing. Gustavo Moncada 8585 Piso 20-A",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10532,
+ "customerID": "EASTC",
+ "employeeID": 7,
+ "orderDate": "1997-05-09 00:00:00.000",
+ "requiredDate": "1997-06-06 00:00:00.000",
+ "shippedDate": "1997-05-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 74.46,
+ "shipName": "Eastern Connection",
+ "shipAddress": {
+ "street": "35 King George",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX3 6FW",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 66,
+ "unitPrice": 17,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10536,
+ "customerID": "LEHMS",
+ "employeeID": 3,
+ "orderDate": "1997-05-14 00:00:00.000",
+ "requiredDate": "1997-06-11 00:00:00.000",
+ "shippedDate": "1997-06-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.88,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10537,
+ "customerID": "RICSU",
+ "employeeID": 1,
+ "orderDate": "1997-05-14 00:00:00.000",
+ "requiredDate": "1997-05-28 00:00:00.000",
+ "shippedDate": "1997-05-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 78.85,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10538,
+ "customerID": "BSBEV",
+ "employeeID": 9,
+ "orderDate": "1997-05-15 00:00:00.000",
+ "requiredDate": "1997-06-12 00:00:00.000",
+ "shippedDate": "1997-05-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.87,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10539,
+ "customerID": "BSBEV",
+ "employeeID": 6,
+ "orderDate": "1997-05-16 00:00:00.000",
+ "requiredDate": "1997-06-13 00:00:00.000",
+ "shippedDate": "1997-05-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 12.36,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10540,
+ "customerID": "QUICK",
+ "employeeID": 3,
+ "orderDate": "1997-05-19 00:00:00.000",
+ "requiredDate": "1997-06-16 00:00:00.000",
+ "shippedDate": "1997-06-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1007.64,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10541,
+ "customerID": "HANAR",
+ "employeeID": 2,
+ "orderDate": "1997-05-19 00:00:00.000",
+ "requiredDate": "1997-06-16 00:00:00.000",
+ "shippedDate": "1997-05-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 68.65,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 35,
+ "discount": 0.1
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 4,
+ "discount": 0.1
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 36,
+ "discount": 0.1
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 9,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10534,
+ "customerID": "LEHMS",
+ "employeeID": 8,
+ "orderDate": "1997-05-12 00:00:00.000",
+ "requiredDate": "1997-06-09 00:00:00.000",
+ "shippedDate": "1997-05-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 27.94,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10533,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1997-05-12 00:00:00.000",
+ "requiredDate": "1997-06-09 00:00:00.000",
+ "shippedDate": "1997-05-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 188.04,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 50,
+ "discount": 0.05
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 24,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10535,
+ "customerID": "ANTON",
+ "employeeID": 4,
+ "orderDate": "1997-05-13 00:00:00.000",
+ "requiredDate": "1997-06-10 00:00:00.000",
+ "shippedDate": "1997-05-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 15.64,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 50,
+ "discount": 0.1
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 5,
+ "discount": 0.1
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10543,
+ "customerID": "LILAS",
+ "employeeID": 8,
+ "orderDate": "1997-05-21 00:00:00.000",
+ "requiredDate": "1997-06-18 00:00:00.000",
+ "shippedDate": "1997-05-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 48.17,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0.15
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 70,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10542,
+ "customerID": "KOENE",
+ "employeeID": 1,
+ "orderDate": "1997-05-20 00:00:00.000",
+ "requiredDate": "1997-06-17 00:00:00.000",
+ "shippedDate": "1997-05-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 10.95,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 24,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10546,
+ "customerID": "VICTE",
+ "employeeID": 1,
+ "orderDate": "1997-05-23 00:00:00.000",
+ "requiredDate": "1997-06-20 00:00:00.000",
+ "shippedDate": "1997-05-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 194.72,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10547,
+ "customerID": "SEVES",
+ "employeeID": 3,
+ "orderDate": "1997-05-23 00:00:00.000",
+ "requiredDate": "1997-06-20 00:00:00.000",
+ "shippedDate": "1997-06-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 178.43,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 24,
+ "discount": 0.15
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10548,
+ "customerID": "TOMSP",
+ "employeeID": 3,
+ "orderDate": "1997-05-26 00:00:00.000",
+ "requiredDate": "1997-06-23 00:00:00.000",
+ "shippedDate": "1997-06-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.43,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0.25
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10550,
+ "customerID": "GODOS",
+ "employeeID": 7,
+ "orderDate": "1997-05-28 00:00:00.000",
+ "requiredDate": "1997-06-25 00:00:00.000",
+ "shippedDate": "1997-06-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.32,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 6,
+ "discount": 0.1
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10544,
+ "customerID": "LONEP",
+ "employeeID": 4,
+ "orderDate": "1997-05-21 00:00:00.000",
+ "requiredDate": "1997-06-18 00:00:00.000",
+ "shippedDate": "1997-05-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 24.91,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10553,
+ "customerID": "WARTH",
+ "employeeID": 2,
+ "orderDate": "1997-05-30 00:00:00.000",
+ "requiredDate": "1997-06-27 00:00:00.000",
+ "shippedDate": "1997-06-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 149.49,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10554,
+ "customerID": "OTTIK",
+ "employeeID": 4,
+ "orderDate": "1997-05-30 00:00:00.000",
+ "requiredDate": "1997-06-27 00:00:00.000",
+ "shippedDate": "1997-06-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 120.97,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10555,
+ "customerID": "SAVEA",
+ "employeeID": 6,
+ "orderDate": "1997-06-02 00:00:00.000",
+ "requiredDate": "1997-06-30 00:00:00.000",
+ "shippedDate": "1997-06-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 252.49,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 18,
+ "discount": 0.2
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10557,
+ "customerID": "LEHMS",
+ "employeeID": 9,
+ "orderDate": "1997-06-03 00:00:00.000",
+ "requiredDate": "1997-06-17 00:00:00.000",
+ "shippedDate": "1997-06-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 96.72,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10558,
+ "customerID": "AROUT",
+ "employeeID": 1,
+ "orderDate": "1997-06-04 00:00:00.000",
+ "requiredDate": "1997-07-02 00:00:00.000",
+ "shippedDate": "1997-06-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 72.97,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10551,
+ "customerID": "FURIB",
+ "employeeID": 4,
+ "orderDate": "1997-05-28 00:00:00.000",
+ "requiredDate": "1997-07-09 00:00:00.000",
+ "shippedDate": "1997-06-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 72.95,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10549,
+ "customerID": "QUICK",
+ "employeeID": 5,
+ "orderDate": "1997-05-27 00:00:00.000",
+ "requiredDate": "1997-06-10 00:00:00.000",
+ "shippedDate": "1997-05-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 171.24,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 55,
+ "discount": 0.15
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 100,
+ "discount": 0.15
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 48,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10552,
+ "customerID": "HILAA",
+ "employeeID": 2,
+ "orderDate": "1997-05-29 00:00:00.000",
+ "requiredDate": "1997-06-26 00:00:00.000",
+ "shippedDate": "1997-06-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 83.22,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10562,
+ "customerID": "REGGC",
+ "employeeID": 1,
+ "orderDate": "1997-06-09 00:00:00.000",
+ "requiredDate": "1997-07-07 00:00:00.000",
+ "shippedDate": "1997-06-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 22.95,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10563,
+ "customerID": "RICAR",
+ "employeeID": 2,
+ "orderDate": "1997-06-10 00:00:00.000",
+ "requiredDate": "1997-07-22 00:00:00.000",
+ "shippedDate": "1997-06-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 60.43,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 70,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10564,
+ "customerID": "RATTC",
+ "employeeID": 4,
+ "orderDate": "1997-06-10 00:00:00.000",
+ "requiredDate": "1997-07-08 00:00:00.000",
+ "shippedDate": "1997-06-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.75,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 16,
+ "discount": 0.05
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 6,
+ "discount": 0.05
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 25,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10565,
+ "customerID": "MEREP",
+ "employeeID": 8,
+ "orderDate": "1997-06-11 00:00:00.000",
+ "requiredDate": "1997-07-09 00:00:00.000",
+ "shippedDate": "1997-06-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.15,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 18,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10566,
+ "customerID": "BLONP",
+ "employeeID": 9,
+ "orderDate": "1997-06-12 00:00:00.000",
+ "requiredDate": "1997-07-10 00:00:00.000",
+ "shippedDate": "1997-06-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 88.4,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 18,
+ "discount": 0.15
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10567,
+ "customerID": "HUNGO",
+ "employeeID": 1,
+ "orderDate": "1997-06-12 00:00:00.000",
+ "requiredDate": "1997-07-10 00:00:00.000",
+ "shippedDate": "1997-06-17 00:00:00.000",
+ "shipVia": 1,
+ "freight": 33.97,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 60,
+ "discount": 0.2
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10559,
+ "customerID": "BLONP",
+ "employeeID": 6,
+ "orderDate": "1997-06-05 00:00:00.000",
+ "requiredDate": "1997-07-03 00:00:00.000",
+ "shippedDate": "1997-06-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.05,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 18,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10569,
+ "customerID": "RATTC",
+ "employeeID": 5,
+ "orderDate": "1997-06-16 00:00:00.000",
+ "requiredDate": "1997-07-14 00:00:00.000",
+ "shippedDate": "1997-07-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 58.98,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10560,
+ "customerID": "FRANK",
+ "employeeID": 8,
+ "orderDate": "1997-06-06 00:00:00.000",
+ "requiredDate": "1997-07-04 00:00:00.000",
+ "shippedDate": "1997-06-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 36.65,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10570,
+ "customerID": "MEREP",
+ "employeeID": 3,
+ "orderDate": "1997-06-17 00:00:00.000",
+ "requiredDate": "1997-07-15 00:00:00.000",
+ "shippedDate": "1997-06-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 188.99,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 60,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10571,
+ "customerID": "ERNSH",
+ "employeeID": 8,
+ "orderDate": "1997-06-17 00:00:00.000",
+ "requiredDate": "1997-07-29 00:00:00.000",
+ "shippedDate": "1997-07-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 26.06,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 11,
+ "discount": 0.15
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 28,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10572,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1997-06-18 00:00:00.000",
+ "requiredDate": "1997-07-16 00:00:00.000",
+ "shippedDate": "1997-06-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 116.43,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 12,
+ "discount": 0.1
+ },
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10561,
+ "customerID": "FOLKO",
+ "employeeID": 2,
+ "orderDate": "1997-06-06 00:00:00.000",
+ "requiredDate": "1997-07-04 00:00:00.000",
+ "shippedDate": "1997-06-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 242.21,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10573,
+ "customerID": "ANTON",
+ "employeeID": 7,
+ "orderDate": "1997-06-19 00:00:00.000",
+ "requiredDate": "1997-07-17 00:00:00.000",
+ "shippedDate": "1997-06-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 84.84,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10574,
+ "customerID": "TRAIH",
+ "employeeID": 4,
+ "orderDate": "1997-06-19 00:00:00.000",
+ "requiredDate": "1997-07-17 00:00:00.000",
+ "shippedDate": "1997-06-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 37.6,
+ "shipName": "Trail's Head Gourmet Provisioners",
+ "shipAddress": {
+ "street": "722 DaVinci Blvd.",
+ "city": "Kirkland",
+ "region": "WA",
+ "postalCode": 98034,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10578,
+ "customerID": "BSBEV",
+ "employeeID": 4,
+ "orderDate": "1997-06-24 00:00:00.000",
+ "requiredDate": "1997-07-22 00:00:00.000",
+ "shippedDate": "1997-07-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 29.6,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10579,
+ "customerID": "LETSS",
+ "employeeID": 1,
+ "orderDate": "1997-06-25 00:00:00.000",
+ "requiredDate": "1997-07-23 00:00:00.000",
+ "shippedDate": "1997-07-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.73,
+ "shipName": "Let's Stop N Shop",
+ "shipAddress": {
+ "street": "87 Polk St. Suite 5",
+ "city": "San Francisco",
+ "region": "CA",
+ "postalCode": 94117,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 15.5,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10580,
+ "customerID": "OTTIK",
+ "employeeID": 4,
+ "orderDate": "1997-06-26 00:00:00.000",
+ "requiredDate": "1997-07-24 00:00:00.000",
+ "shippedDate": "1997-07-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 75.89,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 9,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 30,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10582,
+ "customerID": "BLAUS",
+ "employeeID": 3,
+ "orderDate": "1997-06-27 00:00:00.000",
+ "requiredDate": "1997-07-25 00:00:00.000",
+ "shippedDate": "1997-07-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 27.71,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10583,
+ "customerID": "WARTH",
+ "employeeID": 2,
+ "orderDate": "1997-06-30 00:00:00.000",
+ "requiredDate": "1997-07-28 00:00:00.000",
+ "shippedDate": "1997-07-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.28,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 24,
+ "discount": 0.15
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 10,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10577,
+ "customerID": "TRAIH",
+ "employeeID": 9,
+ "orderDate": "1997-06-23 00:00:00.000",
+ "requiredDate": "1997-08-04 00:00:00.000",
+ "shippedDate": "1997-06-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.41,
+ "shipName": "Trail's Head Gourmet Provisioners",
+ "shipAddress": {
+ "street": "722 DaVinci Blvd.",
+ "city": "Kirkland",
+ "region": "WA",
+ "postalCode": 98034,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10576,
+ "customerID": "TORTU",
+ "employeeID": 3,
+ "orderDate": "1997-06-23 00:00:00.000",
+ "requiredDate": "1997-07-07 00:00:00.000",
+ "shippedDate": "1997-06-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 18.56,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10587,
+ "customerID": "QUEDE",
+ "employeeID": 1,
+ "orderDate": "1997-07-02 00:00:00.000",
+ "requiredDate": "1997-07-30 00:00:00.000",
+ "shippedDate": "1997-07-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 62.52,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10588,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1997-07-03 00:00:00.000",
+ "requiredDate": "1997-07-31 00:00:00.000",
+ "shippedDate": "1997-07-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 194.67,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 100,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10590,
+ "customerID": "MEREP",
+ "employeeID": 4,
+ "orderDate": "1997-07-07 00:00:00.000",
+ "requiredDate": "1997-08-04 00:00:00.000",
+ "shippedDate": "1997-07-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 44.77,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 60,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10575,
+ "customerID": "MORGK",
+ "employeeID": 5,
+ "orderDate": "1997-06-20 00:00:00.000",
+ "requiredDate": "1997-07-04 00:00:00.000",
+ "shippedDate": "1997-06-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 127.34,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10591,
+ "customerID": "VAFFE",
+ "employeeID": 1,
+ "orderDate": "1997-07-07 00:00:00.000",
+ "requiredDate": "1997-07-21 00:00:00.000",
+ "shippedDate": "1997-07-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.92,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10595,
+ "customerID": "ERNSH",
+ "employeeID": 2,
+ "orderDate": "1997-07-10 00:00:00.000",
+ "requiredDate": "1997-08-07 00:00:00.000",
+ "shippedDate": "1997-07-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 96.78,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 65,
+ "discount": 0.25
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 120,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10596,
+ "customerID": "WHITC",
+ "employeeID": 8,
+ "orderDate": "1997-07-11 00:00:00.000",
+ "requiredDate": "1997-08-08 00:00:00.000",
+ "shippedDate": "1997-08-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.34,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 5,
+ "discount": 0.2
+ },
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 24,
+ "discount": 0.2
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 30,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10597,
+ "customerID": "PICCO",
+ "employeeID": 7,
+ "orderDate": "1997-07-11 00:00:00.000",
+ "requiredDate": "1997-08-08 00:00:00.000",
+ "shippedDate": "1997-07-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 35.12,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 12,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10598,
+ "customerID": "RATTC",
+ "employeeID": 1,
+ "orderDate": "1997-07-14 00:00:00.000",
+ "requiredDate": "1997-08-11 00:00:00.000",
+ "shippedDate": "1997-07-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 44.42,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10600,
+ "customerID": "HUNGC",
+ "employeeID": 4,
+ "orderDate": "1997-07-16 00:00:00.000",
+ "requiredDate": "1997-08-13 00:00:00.000",
+ "shippedDate": "1997-07-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 45.13,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10601,
+ "customerID": "HILAA",
+ "employeeID": 7,
+ "orderDate": "1997-07-16 00:00:00.000",
+ "requiredDate": "1997-08-27 00:00:00.000",
+ "shippedDate": "1997-07-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 58.3,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10603,
+ "customerID": "SAVEA",
+ "employeeID": 8,
+ "orderDate": "1997-07-18 00:00:00.000",
+ "requiredDate": "1997-08-15 00:00:00.000",
+ "shippedDate": "1997-08-08 00:00:00.000",
+ "shipVia": 2,
+ "freight": 48.77,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 48,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 25,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10604,
+ "customerID": "FURIB",
+ "employeeID": 1,
+ "orderDate": "1997-07-18 00:00:00.000",
+ "requiredDate": "1997-08-15 00:00:00.000",
+ "shippedDate": "1997-07-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 7.46,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 48,
+ "unitPrice": 12.75,
+ "quantity": 6,
+ "discount": 0.1
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10605,
+ "customerID": "MEREP",
+ "employeeID": 1,
+ "orderDate": "1997-07-21 00:00:00.000",
+ "requiredDate": "1997-08-18 00:00:00.000",
+ "shippedDate": "1997-07-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 379.13,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 70,
+ "discount": 0.05
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10606,
+ "customerID": "TRADH",
+ "employeeID": 4,
+ "orderDate": "1997-07-22 00:00:00.000",
+ "requiredDate": "1997-08-19 00:00:00.000",
+ "shippedDate": "1997-07-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 79.4,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10594,
+ "customerID": "OLDWO",
+ "employeeID": 3,
+ "orderDate": "1997-07-09 00:00:00.000",
+ "requiredDate": "1997-08-06 00:00:00.000",
+ "shippedDate": "1997-07-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 5.24,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10593,
+ "customerID": "LEHMS",
+ "employeeID": 7,
+ "orderDate": "1997-07-09 00:00:00.000",
+ "requiredDate": "1997-08-06 00:00:00.000",
+ "shippedDate": "1997-08-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 174.2,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 21,
+ "discount": 0.2
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 4,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10592,
+ "customerID": "LEHMS",
+ "employeeID": 3,
+ "orderDate": "1997-07-08 00:00:00.000",
+ "requiredDate": "1997-08-05 00:00:00.000",
+ "shippedDate": "1997-07-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 32.1,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 15.5,
+ "quantity": 25,
+ "discount": 0.05
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 5,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10607,
+ "customerID": "SAVEA",
+ "employeeID": 5,
+ "orderDate": "1997-07-22 00:00:00.000",
+ "requiredDate": "1997-08-19 00:00:00.000",
+ "shippedDate": "1997-07-25 00:00:00.000",
+ "shipVia": 1,
+ "freight": 200.24,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 100,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10609,
+ "customerID": "DUMON",
+ "employeeID": 7,
+ "orderDate": "1997-07-24 00:00:00.000",
+ "requiredDate": "1997-08-21 00:00:00.000",
+ "shippedDate": "1997-07-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.85,
+ "shipName": "Du monde entier",
+ "shipAddress": {
+ "street": "67 rue des Cinquante Otages",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10614,
+ "customerID": "BLAUS",
+ "employeeID": 8,
+ "orderDate": "1997-07-29 00:00:00.000",
+ "requiredDate": "1997-08-26 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.93,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10616,
+ "customerID": "GREAL",
+ "employeeID": 1,
+ "orderDate": "1997-07-31 00:00:00.000",
+ "requiredDate": "1997-08-28 00:00:00.000",
+ "shippedDate": "1997-08-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 116.53,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10618,
+ "customerID": "MEREP",
+ "employeeID": 1,
+ "orderDate": "1997-08-01 00:00:00.000",
+ "requiredDate": "1997-09-12 00:00:00.000",
+ "shippedDate": "1997-08-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 154.68,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10619,
+ "customerID": "MEREP",
+ "employeeID": 3,
+ "orderDate": "1997-08-04 00:00:00.000",
+ "requiredDate": "1997-09-01 00:00:00.000",
+ "shippedDate": "1997-08-07 00:00:00.000",
+ "shipVia": 3,
+ "freight": 91.05,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10612,
+ "customerID": "SAVEA",
+ "employeeID": 1,
+ "orderDate": "1997-07-28 00:00:00.000",
+ "requiredDate": "1997-08-25 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 544.08,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 55,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 80,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10613,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1997-07-29 00:00:00.000",
+ "requiredDate": "1997-08-26 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.11,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10611,
+ "customerID": "WOLZA",
+ "employeeID": 6,
+ "orderDate": "1997-07-25 00:00:00.000",
+ "requiredDate": "1997-08-22 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 80.65,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10621,
+ "customerID": "ISLAT",
+ "employeeID": 4,
+ "orderDate": "1997-08-05 00:00:00.000",
+ "requiredDate": "1997-09-02 00:00:00.000",
+ "shippedDate": "1997-08-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 23.73,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10620,
+ "customerID": "LAUGB",
+ "employeeID": 2,
+ "orderDate": "1997-08-05 00:00:00.000",
+ "requiredDate": "1997-09-02 00:00:00.000",
+ "shippedDate": "1997-08-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.94,
+ "shipName": "Laughing Bacchus Wine Cellars",
+ "shipAddress": {
+ "street": "2319 Elm St.",
+ "city": "Vancouver",
+ "region": "BC",
+ "postalCode": "V3F 2K1",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10625,
+ "customerID": "ANATR",
+ "employeeID": 3,
+ "orderDate": "1997-08-08 00:00:00.000",
+ "requiredDate": "1997-09-05 00:00:00.000",
+ "shippedDate": "1997-08-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 43.9,
+ "shipName": "Ana Trujillo Emparedados y helados",
+ "shipAddress": {
+ "street": "Avda. de la Constitución 2222",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5021,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10623,
+ "customerID": "FRANK",
+ "employeeID": 8,
+ "orderDate": "1997-08-07 00:00:00.000",
+ "requiredDate": "1997-09-04 00:00:00.000",
+ "shippedDate": "1997-08-12 00:00:00.000",
+ "shipVia": 2,
+ "freight": 97.18,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10622,
+ "customerID": "RICAR",
+ "employeeID": 4,
+ "orderDate": "1997-08-06 00:00:00.000",
+ "requiredDate": "1997-09-03 00:00:00.000",
+ "shippedDate": "1997-08-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 50.97,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 18,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10624,
+ "customerID": "THECR",
+ "employeeID": 4,
+ "orderDate": "1997-08-07 00:00:00.000",
+ "requiredDate": "1997-09-04 00:00:00.000",
+ "shippedDate": "1997-08-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 94.8,
+ "shipName": "The Cracker Box",
+ "shipAddress": {
+ "street": "55 Grizzly Peak Rd.",
+ "city": "Butte",
+ "region": "MT",
+ "postalCode": 59801,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10626,
+ "customerID": "BERGS",
+ "employeeID": 1,
+ "orderDate": "1997-08-11 00:00:00.000",
+ "requiredDate": "1997-09-08 00:00:00.000",
+ "shippedDate": "1997-08-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 138.69,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10627,
+ "customerID": "SAVEA",
+ "employeeID": 8,
+ "orderDate": "1997-08-11 00:00:00.000",
+ "requiredDate": "1997-09-22 00:00:00.000",
+ "shippedDate": "1997-08-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 107.46,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 35,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10630,
+ "customerID": "KOENE",
+ "employeeID": 1,
+ "orderDate": "1997-08-13 00:00:00.000",
+ "requiredDate": "1997-09-10 00:00:00.000",
+ "shippedDate": "1997-08-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 32.35,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10629,
+ "customerID": "GODOS",
+ "employeeID": 4,
+ "orderDate": "1997-08-12 00:00:00.000",
+ "requiredDate": "1997-09-09 00:00:00.000",
+ "shippedDate": "1997-08-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 85.46,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10632,
+ "customerID": "WANDK",
+ "employeeID": 8,
+ "orderDate": "1997-08-14 00:00:00.000",
+ "requiredDate": "1997-09-11 00:00:00.000",
+ "shippedDate": "1997-08-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 41.38,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10633,
+ "customerID": "ERNSH",
+ "employeeID": 7,
+ "orderDate": "1997-08-15 00:00:00.000",
+ "requiredDate": "1997-09-12 00:00:00.000",
+ "shippedDate": "1997-08-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 477.9,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 36,
+ "discount": 0.15
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 13,
+ "discount": 0.15
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 80,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10634,
+ "customerID": "FOLIG",
+ "employeeID": 4,
+ "orderDate": "1997-08-15 00:00:00.000",
+ "requiredDate": "1997-09-12 00:00:00.000",
+ "shippedDate": "1997-08-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 487.38,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10638,
+ "customerID": "LINOD",
+ "employeeID": 3,
+ "orderDate": "1997-08-20 00:00:00.000",
+ "requiredDate": "1997-09-17 00:00:00.000",
+ "shippedDate": "1997-09-01 00:00:00.000",
+ "shipVia": 1,
+ "freight": 158.44,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10640,
+ "customerID": "WANDK",
+ "employeeID": 4,
+ "orderDate": "1997-08-21 00:00:00.000",
+ "requiredDate": "1997-09-18 00:00:00.000",
+ "shippedDate": "1997-08-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 23.55,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10641,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1997-08-22 00:00:00.000",
+ "requiredDate": "1997-09-19 00:00:00.000",
+ "shippedDate": "1997-08-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 179.61,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10642,
+ "customerID": "SIMOB",
+ "employeeID": 7,
+ "orderDate": "1997-08-22 00:00:00.000",
+ "requiredDate": "1997-09-19 00:00:00.000",
+ "shippedDate": "1997-09-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 41.89,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10643,
+ "customerID": "ALFKI",
+ "employeeID": 6,
+ "orderDate": "1997-08-25 00:00:00.000",
+ "requiredDate": "1997-09-22 00:00:00.000",
+ "shippedDate": "1997-09-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 29.46,
+ "shipName": "Alfreds Futterkiste",
+ "shipAddress": {
+ "street": "Obere Str. 57",
+ "city": "Berlin",
+ "region": "NULL",
+ "postalCode": 12209,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 2,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10636,
+ "customerID": "WARTH",
+ "employeeID": 4,
+ "orderDate": "1997-08-19 00:00:00.000",
+ "requiredDate": "1997-09-16 00:00:00.000",
+ "shippedDate": "1997-08-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.15,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10644,
+ "customerID": "WELLI",
+ "employeeID": 3,
+ "orderDate": "1997-08-25 00:00:00.000",
+ "requiredDate": "1997-09-22 00:00:00.000",
+ "shippedDate": "1997-09-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.14,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 4,
+ "discount": 0.1
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 21,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10635,
+ "customerID": "MAGAA",
+ "employeeID": 8,
+ "orderDate": "1997-08-18 00:00:00.000",
+ "requiredDate": "1997-09-15 00:00:00.000",
+ "shippedDate": "1997-08-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 47.46,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 5,
+ "unitPrice": 21.35,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10637,
+ "customerID": "QUEEN",
+ "employeeID": 6,
+ "orderDate": "1997-08-19 00:00:00.000",
+ "requiredDate": "1997-09-16 00:00:00.000",
+ "shippedDate": "1997-08-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 201.29,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 50,
+ "unitPrice": 16.25,
+ "quantity": 25,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 60,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10645,
+ "customerID": "HANAR",
+ "employeeID": 4,
+ "orderDate": "1997-08-26 00:00:00.000",
+ "requiredDate": "1997-09-23 00:00:00.000",
+ "shippedDate": "1997-09-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.41,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10649,
+ "customerID": "MAISD",
+ "employeeID": 5,
+ "orderDate": "1997-08-28 00:00:00.000",
+ "requiredDate": "1997-09-25 00:00:00.000",
+ "shippedDate": "1997-08-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 6.2,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10650,
+ "customerID": "FAMIA",
+ "employeeID": 5,
+ "orderDate": "1997-08-29 00:00:00.000",
+ "requiredDate": "1997-09-26 00:00:00.000",
+ "shippedDate": "1997-09-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 176.81,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 25,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10651,
+ "customerID": "WANDK",
+ "employeeID": 8,
+ "orderDate": "1997-09-01 00:00:00.000",
+ "requiredDate": "1997-09-29 00:00:00.000",
+ "shippedDate": "1997-09-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 20.6,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 20,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10652,
+ "customerID": "GOURL",
+ "employeeID": 4,
+ "orderDate": "1997-09-01 00:00:00.000",
+ "requiredDate": "1997-09-29 00:00:00.000",
+ "shippedDate": "1997-09-08 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.14,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 2,
+ "discount": 0.25
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10653,
+ "customerID": "FRANK",
+ "employeeID": 1,
+ "orderDate": "1997-09-02 00:00:00.000",
+ "requiredDate": "1997-09-30 00:00:00.000",
+ "shippedDate": "1997-09-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 93.25,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10654,
+ "customerID": "BERGS",
+ "employeeID": 5,
+ "orderDate": "1997-09-02 00:00:00.000",
+ "requiredDate": "1997-09-30 00:00:00.000",
+ "shippedDate": "1997-09-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.26,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 12,
+ "discount": 0.1
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 6,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10647,
+ "customerID": "QUEDE",
+ "employeeID": 4,
+ "orderDate": "1997-08-27 00:00:00.000",
+ "requiredDate": "1997-09-10 00:00:00.000",
+ "shippedDate": "1997-09-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 45.54,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10656,
+ "customerID": "GREAL",
+ "employeeID": 6,
+ "orderDate": "1997-09-04 00:00:00.000",
+ "requiredDate": "1997-10-02 00:00:00.000",
+ "shippedDate": "1997-09-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 57.15,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 3,
+ "discount": 0.1
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 28,
+ "discount": 0.1
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 6,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10657,
+ "customerID": "SAVEA",
+ "employeeID": 2,
+ "orderDate": "1997-09-04 00:00:00.000",
+ "requiredDate": "1997-10-02 00:00:00.000",
+ "shippedDate": "1997-09-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 352.69,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 15,
+ "unitPrice": 15.5,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10658,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1997-09-05 00:00:00.000",
+ "requiredDate": "1997-10-03 00:00:00.000",
+ "shippedDate": "1997-09-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 364.15,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 70,
+ "discount": 0.05
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 55,
+ "discount": 0.05
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 70,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10646,
+ "customerID": "HUNGO",
+ "employeeID": 9,
+ "orderDate": "1997-08-27 00:00:00.000",
+ "requiredDate": "1997-10-08 00:00:00.000",
+ "shippedDate": "1997-09-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 142.33,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 18,
+ "discount": 0.25
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 35,
+ "discount": 0.25
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10648,
+ "customerID": "RICAR",
+ "employeeID": 5,
+ "orderDate": "1997-08-28 00:00:00.000",
+ "requiredDate": "1997-10-09 00:00:00.000",
+ "shippedDate": "1997-09-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 14.25,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10659,
+ "customerID": "QUEEN",
+ "employeeID": 7,
+ "orderDate": "1997-09-05 00:00:00.000",
+ "requiredDate": "1997-10-03 00:00:00.000",
+ "shippedDate": "1997-09-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 105.81,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 24,
+ "discount": 0.05
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10664,
+ "customerID": "FURIB",
+ "employeeID": 1,
+ "orderDate": "1997-09-10 00:00:00.000",
+ "requiredDate": "1997-10-08 00:00:00.000",
+ "shippedDate": "1997-09-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.27,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 24,
+ "discount": 0.15
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 12,
+ "discount": 0.15
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10661,
+ "customerID": "HUNGO",
+ "employeeID": 7,
+ "orderDate": "1997-09-09 00:00:00.000",
+ "requiredDate": "1997-10-07 00:00:00.000",
+ "shippedDate": "1997-09-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 17.55,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 3,
+ "discount": 0.2
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 49,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10665,
+ "customerID": "LONEP",
+ "employeeID": 1,
+ "orderDate": "1997-09-11 00:00:00.000",
+ "requiredDate": "1997-10-09 00:00:00.000",
+ "shippedDate": "1997-09-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 26.31,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10663,
+ "customerID": "BONAP",
+ "employeeID": 2,
+ "orderDate": "1997-09-10 00:00:00.000",
+ "requiredDate": "1997-09-24 00:00:00.000",
+ "shippedDate": "1997-10-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 113.15,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10666,
+ "customerID": "RICSU",
+ "employeeID": 7,
+ "orderDate": "1997-09-12 00:00:00.000",
+ "requiredDate": "1997-10-10 00:00:00.000",
+ "shippedDate": "1997-09-22 00:00:00.000",
+ "shipVia": 2,
+ "freight": 232.42,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10667,
+ "customerID": "ERNSH",
+ "employeeID": 7,
+ "orderDate": "1997-09-12 00:00:00.000",
+ "requiredDate": "1997-10-10 00:00:00.000",
+ "shippedDate": "1997-09-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 78.09,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 45,
+ "discount": 0.2
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 14,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10668,
+ "customerID": "WANDK",
+ "employeeID": 1,
+ "orderDate": "1997-09-15 00:00:00.000",
+ "requiredDate": "1997-10-13 00:00:00.000",
+ "shippedDate": "1997-09-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 47.22,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 4,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10670,
+ "customerID": "FRANK",
+ "employeeID": 4,
+ "orderDate": "1997-09-16 00:00:00.000",
+ "requiredDate": "1997-10-14 00:00:00.000",
+ "shippedDate": "1997-09-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 203.48,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 32,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10672,
+ "customerID": "BERGS",
+ "employeeID": 9,
+ "orderDate": "1997-09-17 00:00:00.000",
+ "requiredDate": "1997-10-01 00:00:00.000",
+ "shippedDate": "1997-09-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 95.75,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10671,
+ "customerID": "FRANR",
+ "employeeID": 1,
+ "orderDate": "1997-09-17 00:00:00.000",
+ "requiredDate": "1997-10-15 00:00:00.000",
+ "shippedDate": "1997-09-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 30.34,
+ "shipName": "France restauration",
+ "shipAddress": {
+ "street": "54 rue Royale",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10673,
+ "customerID": "WILMK",
+ "employeeID": 2,
+ "orderDate": "1997-09-18 00:00:00.000",
+ "requiredDate": "1997-10-16 00:00:00.000",
+ "shippedDate": "1997-09-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 22.76,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10677,
+ "customerID": "ANTON",
+ "employeeID": 1,
+ "orderDate": "1997-09-22 00:00:00.000",
+ "requiredDate": "1997-10-20 00:00:00.000",
+ "shippedDate": "1997-09-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.03,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 30,
+ "discount": 0.15
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 8,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10678,
+ "customerID": "SAVEA",
+ "employeeID": 7,
+ "orderDate": "1997-09-23 00:00:00.000",
+ "requiredDate": "1997-10-21 00:00:00.000",
+ "shippedDate": "1997-10-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 388.98,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 100,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 120,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10680,
+ "customerID": "OLDWO",
+ "employeeID": 1,
+ "orderDate": "1997-09-24 00:00:00.000",
+ "requiredDate": "1997-10-22 00:00:00.000",
+ "shippedDate": "1997-09-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 26.61,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 40,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10681,
+ "customerID": "GREAL",
+ "employeeID": 3,
+ "orderDate": "1997-09-25 00:00:00.000",
+ "requiredDate": "1997-10-23 00:00:00.000",
+ "shippedDate": "1997-09-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 76.13,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 12,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10682,
+ "customerID": "ANTON",
+ "employeeID": 3,
+ "orderDate": "1997-09-25 00:00:00.000",
+ "requiredDate": "1997-10-23 00:00:00.000",
+ "shippedDate": "1997-10-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 36.13,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 66,
+ "unitPrice": 17,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10675,
+ "customerID": "FRANK",
+ "employeeID": 5,
+ "orderDate": "1997-09-19 00:00:00.000",
+ "requiredDate": "1997-10-17 00:00:00.000",
+ "shippedDate": "1997-09-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 31.85,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10684,
+ "customerID": "OTTIK",
+ "employeeID": 3,
+ "orderDate": "1997-09-26 00:00:00.000",
+ "requiredDate": "1997-10-24 00:00:00.000",
+ "shippedDate": "1997-09-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 145.63,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10685,
+ "customerID": "GOURL",
+ "employeeID": 4,
+ "orderDate": "1997-09-29 00:00:00.000",
+ "requiredDate": "1997-10-13 00:00:00.000",
+ "shippedDate": "1997-10-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 33.75,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10676,
+ "customerID": "TORTU",
+ "employeeID": 2,
+ "orderDate": "1997-09-22 00:00:00.000",
+ "requiredDate": "1997-10-20 00:00:00.000",
+ "shippedDate": "1997-09-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.01,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10686,
+ "customerID": "PICCO",
+ "employeeID": 2,
+ "orderDate": "1997-09-30 00:00:00.000",
+ "requiredDate": "1997-10-28 00:00:00.000",
+ "shippedDate": "1997-10-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 96.5,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 30,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10687,
+ "customerID": "HUNGO",
+ "employeeID": 9,
+ "orderDate": "1997-09-30 00:00:00.000",
+ "requiredDate": "1997-10-28 00:00:00.000",
+ "shippedDate": "1997-10-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 296.43,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 97,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 6,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10691,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1997-10-03 00:00:00.000",
+ "requiredDate": "1997-11-14 00:00:00.000",
+ "shippedDate": "1997-10-22 00:00:00.000",
+ "shipVia": 2,
+ "freight": 810.05,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 48,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10693,
+ "customerID": "WHITC",
+ "employeeID": 3,
+ "orderDate": "1997-10-06 00:00:00.000",
+ "requiredDate": "1997-10-20 00:00:00.000",
+ "shippedDate": "1997-10-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 139.34,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 97,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 60,
+ "discount": 0.15
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 30,
+ "discount": 0.15
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10694,
+ "customerID": "QUICK",
+ "employeeID": 8,
+ "orderDate": "1997-10-06 00:00:00.000",
+ "requiredDate": "1997-11-03 00:00:00.000",
+ "shippedDate": "1997-10-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 398.36,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 90,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10695,
+ "customerID": "WILMK",
+ "employeeID": 7,
+ "orderDate": "1997-10-07 00:00:00.000",
+ "requiredDate": "1997-11-18 00:00:00.000",
+ "shippedDate": "1997-10-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.72,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10696,
+ "customerID": "WHITC",
+ "employeeID": 8,
+ "orderDate": "1997-10-08 00:00:00.000",
+ "requiredDate": "1997-11-19 00:00:00.000",
+ "shippedDate": "1997-10-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 102.55,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10697,
+ "customerID": "LINOD",
+ "employeeID": 3,
+ "orderDate": "1997-10-08 00:00:00.000",
+ "requiredDate": "1997-11-05 00:00:00.000",
+ "shippedDate": "1997-10-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 45.52,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 9,
+ "discount": 0.25
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 7,
+ "discount": 0.25
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10698,
+ "customerID": "ERNSH",
+ "employeeID": 4,
+ "orderDate": "1997-10-09 00:00:00.000",
+ "requiredDate": "1997-11-06 00:00:00.000",
+ "shippedDate": "1997-10-17 00:00:00.000",
+ "shipVia": 1,
+ "freight": 272.47,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 8,
+ "discount": 0.05
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 65,
+ "discount": 0.05
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 8,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10690,
+ "customerID": "HANAR",
+ "employeeID": 1,
+ "orderDate": "1997-10-02 00:00:00.000",
+ "requiredDate": "1997-10-30 00:00:00.000",
+ "shippedDate": "1997-10-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 15.8,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10702,
+ "customerID": "ALFKI",
+ "employeeID": 4,
+ "orderDate": "1997-10-13 00:00:00.000",
+ "requiredDate": "1997-11-24 00:00:00.000",
+ "shippedDate": "1997-10-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 23.94,
+ "shipName": "Alfred's Futterkiste",
+ "shipAddress": {
+ "street": "Obere Str. 57",
+ "city": "Berlin",
+ "region": "NULL",
+ "postalCode": 12209,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10700,
+ "customerID": "SAVEA",
+ "employeeID": 3,
+ "orderDate": "1997-10-10 00:00:00.000",
+ "requiredDate": "1997-11-07 00:00:00.000",
+ "shippedDate": "1997-10-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 65.1,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 5,
+ "discount": 0.2
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 60,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10688,
+ "customerID": "VAFFE",
+ "employeeID": 4,
+ "orderDate": "1997-10-01 00:00:00.000",
+ "requiredDate": "1997-10-15 00:00:00.000",
+ "shippedDate": "1997-10-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 299.09,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 60,
+ "discount": 0.1
+ },
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10701,
+ "customerID": "HUNGO",
+ "employeeID": 6,
+ "orderDate": "1997-10-13 00:00:00.000",
+ "requiredDate": "1997-10-27 00:00:00.000",
+ "shippedDate": "1997-10-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 220.31,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 42,
+ "discount": 0.15
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 35,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10703,
+ "customerID": "FOLKO",
+ "employeeID": 6,
+ "orderDate": "1997-10-14 00:00:00.000",
+ "requiredDate": "1997-11-11 00:00:00.000",
+ "shippedDate": "1997-10-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 152.3,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10704,
+ "customerID": "QUEEN",
+ "employeeID": 6,
+ "orderDate": "1997-10-14 00:00:00.000",
+ "requiredDate": "1997-11-11 00:00:00.000",
+ "shippedDate": "1997-11-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.78,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 48,
+ "unitPrice": 12.75,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10708,
+ "customerID": "THEBI",
+ "employeeID": 6,
+ "orderDate": "1997-10-17 00:00:00.000",
+ "requiredDate": "1997-11-28 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.96,
+ "shipName": "The Big Cheese",
+ "shipAddress": {
+ "street": "89 Jefferson Way Suite 2",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97201,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 5,
+ "unitPrice": 21.35,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10709,
+ "customerID": "GOURL",
+ "employeeID": 1,
+ "orderDate": "1997-10-17 00:00:00.000",
+ "requiredDate": "1997-11-14 00:00:00.000",
+ "shippedDate": "1997-11-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 210.8,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10710,
+ "customerID": "FRANS",
+ "employeeID": 1,
+ "orderDate": "1997-10-20 00:00:00.000",
+ "requiredDate": "1997-11-17 00:00:00.000",
+ "shippedDate": "1997-10-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.98,
+ "shipName": "Franchi S.p.A.",
+ "shipAddress": {
+ "street": "Via Monte Bianco 34",
+ "city": "Torino",
+ "region": "NULL",
+ "postalCode": 10100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10711,
+ "customerID": "SAVEA",
+ "employeeID": 5,
+ "orderDate": "1997-10-21 00:00:00.000",
+ "requiredDate": "1997-12-02 00:00:00.000",
+ "shippedDate": "1997-10-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 52.41,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 120,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10712,
+ "customerID": "HUNGO",
+ "employeeID": 3,
+ "orderDate": "1997-10-21 00:00:00.000",
+ "requiredDate": "1997-11-18 00:00:00.000",
+ "shippedDate": "1997-10-31 00:00:00.000",
+ "shipVia": 1,
+ "freight": 89.93,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 3,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10713,
+ "customerID": "SAVEA",
+ "employeeID": 1,
+ "orderDate": "1997-10-22 00:00:00.000",
+ "requiredDate": "1997-11-19 00:00:00.000",
+ "shippedDate": "1997-10-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 167.05,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 110,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10707,
+ "customerID": "AROUT",
+ "employeeID": 4,
+ "orderDate": "1997-10-16 00:00:00.000",
+ "requiredDate": "1997-10-30 00:00:00.000",
+ "shippedDate": "1997-10-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 21.74,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 28,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10715,
+ "customerID": "BONAP",
+ "employeeID": 3,
+ "orderDate": "1997-10-23 00:00:00.000",
+ "requiredDate": "1997-11-06 00:00:00.000",
+ "shippedDate": "1997-10-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 63.2,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10706,
+ "customerID": "OLDWO",
+ "employeeID": 8,
+ "orderDate": "1997-10-16 00:00:00.000",
+ "requiredDate": "1997-11-13 00:00:00.000",
+ "shippedDate": "1997-10-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 135.63,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10705,
+ "customerID": "HILAA",
+ "employeeID": 9,
+ "orderDate": "1997-10-15 00:00:00.000",
+ "requiredDate": "1997-11-12 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.52,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10714,
+ "customerID": "SAVEA",
+ "employeeID": 5,
+ "orderDate": "1997-10-22 00:00:00.000",
+ "requiredDate": "1997-11-19 00:00:00.000",
+ "shippedDate": "1997-10-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 24.49,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 18,
+ "discount": 0.25
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 27,
+ "discount": 0.25
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10719,
+ "customerID": "LETSS",
+ "employeeID": 8,
+ "orderDate": "1997-10-27 00:00:00.000",
+ "requiredDate": "1997-11-24 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 51.44,
+ "shipName": "Let's Stop N Shop",
+ "shipAddress": {
+ "street": "87 Polk St. Suite 5",
+ "city": "San Francisco",
+ "region": "CA",
+ "postalCode": 94117,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 3,
+ "discount": 0.25
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 40,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10720,
+ "customerID": "QUEDE",
+ "employeeID": 8,
+ "orderDate": "1997-10-28 00:00:00.000",
+ "requiredDate": "1997-11-11 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 9.53,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10722,
+ "customerID": "SAVEA",
+ "employeeID": 8,
+ "orderDate": "1997-10-29 00:00:00.000",
+ "requiredDate": "1997-12-10 00:00:00.000",
+ "shippedDate": "1997-11-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 74.58,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 42,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10724,
+ "customerID": "MEREP",
+ "employeeID": 8,
+ "orderDate": "1997-10-30 00:00:00.000",
+ "requiredDate": "1997-12-11 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 57.75,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10716,
+ "customerID": "RANCH",
+ "employeeID": 4,
+ "orderDate": "1997-10-24 00:00:00.000",
+ "requiredDate": "1997-11-21 00:00:00.000",
+ "shippedDate": "1997-10-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 22.57,
+ "shipName": "Rancho grande",
+ "shipAddress": {
+ "street": "Av. del Libertador 900",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10726,
+ "customerID": "EASTC",
+ "employeeID": 4,
+ "orderDate": "1997-11-03 00:00:00.000",
+ "requiredDate": "1997-11-17 00:00:00.000",
+ "shippedDate": "1997-12-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.56,
+ "shipName": "Eastern Connection",
+ "shipAddress": {
+ "street": "35 King George",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX3 6FW",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10717,
+ "customerID": "FRANK",
+ "employeeID": 1,
+ "orderDate": "1997-10-24 00:00:00.000",
+ "requiredDate": "1997-11-21 00:00:00.000",
+ "shippedDate": "1997-10-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 59.25,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 32,
+ "discount": 0.05
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 25,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10727,
+ "customerID": "REGGC",
+ "employeeID": 2,
+ "orderDate": "1997-11-03 00:00:00.000",
+ "requiredDate": "1997-12-01 00:00:00.000",
+ "shippedDate": "1997-12-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 89.9,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10728,
+ "customerID": "QUEEN",
+ "employeeID": 4,
+ "orderDate": "1997-11-04 00:00:00.000",
+ "requiredDate": "1997-12-02 00:00:00.000",
+ "shippedDate": "1997-11-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.33,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10729,
+ "customerID": "LINOD",
+ "employeeID": 8,
+ "orderDate": "1997-11-04 00:00:00.000",
+ "requiredDate": "1997-12-16 00:00:00.000",
+ "shippedDate": "1997-11-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 141.06,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 50,
+ "unitPrice": 16.25,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10730,
+ "customerID": "BONAP",
+ "employeeID": 5,
+ "orderDate": "1997-11-05 00:00:00.000",
+ "requiredDate": "1997-12-03 00:00:00.000",
+ "shippedDate": "1997-11-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 20.12,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 3,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10718,
+ "customerID": "KOENE",
+ "employeeID": 1,
+ "orderDate": "1997-10-27 00:00:00.000",
+ "requiredDate": "1997-11-24 00:00:00.000",
+ "shippedDate": "1997-10-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 170.88,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10725,
+ "customerID": "FAMIA",
+ "employeeID": 4,
+ "orderDate": "1997-10-31 00:00:00.000",
+ "requiredDate": "1997-11-28 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 10.83,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10731,
+ "customerID": "CHOPS",
+ "employeeID": 7,
+ "orderDate": "1997-11-06 00:00:00.000",
+ "requiredDate": "1997-12-04 00:00:00.000",
+ "shippedDate": "1997-11-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 96.65,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0.05
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 30,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10735,
+ "customerID": "LETSS",
+ "employeeID": 6,
+ "orderDate": "1997-11-10 00:00:00.000",
+ "requiredDate": "1997-12-08 00:00:00.000",
+ "shippedDate": "1997-11-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 45.97,
+ "shipName": "Let's Stop N Shop",
+ "shipAddress": {
+ "street": "87 Polk St. Suite 5",
+ "city": "San Francisco",
+ "region": "CA",
+ "postalCode": 94117,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 2,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10736,
+ "customerID": "HUNGO",
+ "employeeID": 9,
+ "orderDate": "1997-11-11 00:00:00.000",
+ "requiredDate": "1997-12-09 00:00:00.000",
+ "shippedDate": "1997-11-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 44.1,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10737,
+ "customerID": "VINET",
+ "employeeID": 2,
+ "orderDate": "1997-11-11 00:00:00.000",
+ "requiredDate": "1997-12-09 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.79,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10739,
+ "customerID": "VINET",
+ "employeeID": 3,
+ "orderDate": "1997-11-12 00:00:00.000",
+ "requiredDate": "1997-12-10 00:00:00.000",
+ "shippedDate": "1997-11-17 00:00:00.000",
+ "shipVia": 3,
+ "freight": 11.08,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10740,
+ "customerID": "WHITC",
+ "employeeID": 4,
+ "orderDate": "1997-11-13 00:00:00.000",
+ "requiredDate": "1997-12-11 00:00:00.000",
+ "shippedDate": "1997-11-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 81.88,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 5,
+ "discount": 0.2
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 14,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10733,
+ "customerID": "BERGS",
+ "employeeID": 1,
+ "orderDate": "1997-11-07 00:00:00.000",
+ "requiredDate": "1997-12-05 00:00:00.000",
+ "shippedDate": "1997-11-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 110.11,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10742,
+ "customerID": "BOTTM",
+ "employeeID": 3,
+ "orderDate": "1997-11-14 00:00:00.000",
+ "requiredDate": "1997-12-12 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 243.73,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10734,
+ "customerID": "GOURL",
+ "employeeID": 2,
+ "orderDate": "1997-11-07 00:00:00.000",
+ "requiredDate": "1997-12-05 00:00:00.000",
+ "shippedDate": "1997-11-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.63,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10747,
+ "customerID": "PICCO",
+ "employeeID": 6,
+ "orderDate": "1997-11-19 00:00:00.000",
+ "requiredDate": "1997-12-17 00:00:00.000",
+ "shippedDate": "1997-11-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 117.33,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10748,
+ "customerID": "SAVEA",
+ "employeeID": 3,
+ "orderDate": "1997-11-20 00:00:00.000",
+ "requiredDate": "1997-12-18 00:00:00.000",
+ "shippedDate": "1997-11-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 232.55,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 44,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10749,
+ "customerID": "ISLAT",
+ "employeeID": 4,
+ "orderDate": "1997-11-20 00:00:00.000",
+ "requiredDate": "1997-12-18 00:00:00.000",
+ "shippedDate": "1997-12-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 61.53,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10750,
+ "customerID": "WARTH",
+ "employeeID": 9,
+ "orderDate": "1997-11-21 00:00:00.000",
+ "requiredDate": "1997-12-19 00:00:00.000",
+ "shippedDate": "1997-11-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 79.3,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 5,
+ "discount": 0.15
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 25,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10751,
+ "customerID": "RICSU",
+ "employeeID": 3,
+ "orderDate": "1997-11-24 00:00:00.000",
+ "requiredDate": "1997-12-22 00:00:00.000",
+ "shippedDate": "1997-12-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 130.79,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 12,
+ "discount": 0.1
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 50,
+ "unitPrice": 16.25,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10752,
+ "customerID": "NORTS",
+ "employeeID": 2,
+ "orderDate": "1997-11-24 00:00:00.000",
+ "requiredDate": "1997-12-22 00:00:00.000",
+ "shippedDate": "1997-11-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.39,
+ "shipName": "North/South",
+ "shipAddress": {
+ "street": "South House 300 Queensbridge",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "SW7 1RZ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10753,
+ "customerID": "FRANS",
+ "employeeID": 3,
+ "orderDate": "1997-11-25 00:00:00.000",
+ "requiredDate": "1997-12-23 00:00:00.000",
+ "shippedDate": "1997-11-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 7.7,
+ "shipName": "Franchi S.p.A.",
+ "shipAddress": {
+ "street": "Via Monte Bianco 34",
+ "city": "Torino",
+ "region": "NULL",
+ "postalCode": 10100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 10,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10745,
+ "customerID": "QUICK",
+ "employeeID": 9,
+ "orderDate": "1997-11-18 00:00:00.000",
+ "requiredDate": "1997-12-16 00:00:00.000",
+ "shippedDate": "1997-11-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 3.52,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10755,
+ "customerID": "BONAP",
+ "employeeID": 4,
+ "orderDate": "1997-11-26 00:00:00.000",
+ "requiredDate": "1997-12-24 00:00:00.000",
+ "shippedDate": "1997-11-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 16.71,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 14,
+ "discount": 0.25
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 25,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10756,
+ "customerID": "SPLIR",
+ "employeeID": 8,
+ "orderDate": "1997-11-27 00:00:00.000",
+ "requiredDate": "1997-12-25 00:00:00.000",
+ "shippedDate": "1997-12-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 73.21,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 21,
+ "discount": 0.2
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 6,
+ "discount": 0.2
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10746,
+ "customerID": "CHOPS",
+ "employeeID": 1,
+ "orderDate": "1997-11-19 00:00:00.000",
+ "requiredDate": "1997-12-17 00:00:00.000",
+ "shippedDate": "1997-11-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 31.43,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10757,
+ "customerID": "SAVEA",
+ "employeeID": 6,
+ "orderDate": "1997-11-27 00:00:00.000",
+ "requiredDate": "1997-12-25 00:00:00.000",
+ "shippedDate": "1997-12-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.19,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10761,
+ "customerID": "RATTC",
+ "employeeID": 5,
+ "orderDate": "1997-12-02 00:00:00.000",
+ "requiredDate": "1997-12-30 00:00:00.000",
+ "shippedDate": "1997-12-08 00:00:00.000",
+ "shipVia": 2,
+ "freight": 18.66,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 35,
+ "discount": 0.25
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10762,
+ "customerID": "FOLKO",
+ "employeeID": 3,
+ "orderDate": "1997-12-02 00:00:00.000",
+ "requiredDate": "1997-12-30 00:00:00.000",
+ "shippedDate": "1997-12-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 328.74,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10763,
+ "customerID": "FOLIG",
+ "employeeID": 3,
+ "orderDate": "1997-12-03 00:00:00.000",
+ "requiredDate": "1997-12-31 00:00:00.000",
+ "shippedDate": "1997-12-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 37.35,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10764,
+ "customerID": "ERNSH",
+ "employeeID": 6,
+ "orderDate": "1997-12-03 00:00:00.000",
+ "requiredDate": "1997-12-31 00:00:00.000",
+ "shippedDate": "1997-12-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 145.45,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 130,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10766,
+ "customerID": "OTTIK",
+ "employeeID": 4,
+ "orderDate": "1997-12-05 00:00:00.000",
+ "requiredDate": "1998-01-02 00:00:00.000",
+ "shippedDate": "1997-12-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 157.55,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10760,
+ "customerID": "MAISD",
+ "employeeID": 4,
+ "orderDate": "1997-12-01 00:00:00.000",
+ "requiredDate": "1997-12-29 00:00:00.000",
+ "shippedDate": "1997-12-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 155.64,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10768,
+ "customerID": "AROUT",
+ "employeeID": 3,
+ "orderDate": "1997-12-08 00:00:00.000",
+ "requiredDate": "1998-01-05 00:00:00.000",
+ "shippedDate": "1997-12-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 146.32,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10759,
+ "customerID": "ANATR",
+ "employeeID": 3,
+ "orderDate": "1997-11-28 00:00:00.000",
+ "requiredDate": "1997-12-26 00:00:00.000",
+ "shippedDate": "1997-12-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 11.99,
+ "shipName": "Ana Trujillo Emparedados y helados",
+ "shipAddress": {
+ "street": "Avda. de la Constitución 2222",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5021,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10769,
+ "customerID": "VAFFE",
+ "employeeID": 3,
+ "orderDate": "1997-12-08 00:00:00.000",
+ "requiredDate": "1998-01-05 00:00:00.000",
+ "shippedDate": "1997-12-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 65.06,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10772,
+ "customerID": "LEHMS",
+ "employeeID": 3,
+ "orderDate": "1997-12-10 00:00:00.000",
+ "requiredDate": "1998-01-07 00:00:00.000",
+ "shippedDate": "1997-12-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 91.28,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10758,
+ "customerID": "RICSU",
+ "employeeID": 3,
+ "orderDate": "1997-11-28 00:00:00.000",
+ "requiredDate": "1997-12-26 00:00:00.000",
+ "shippedDate": "1997-12-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 138.17,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10773,
+ "customerID": "ERNSH",
+ "employeeID": 1,
+ "orderDate": "1997-12-11 00:00:00.000",
+ "requiredDate": "1998-01-08 00:00:00.000",
+ "shippedDate": "1997-12-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 96.43,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 33,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 70,
+ "discount": 0.2
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 7,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10775,
+ "customerID": "THECR",
+ "employeeID": 7,
+ "orderDate": "1997-12-12 00:00:00.000",
+ "requiredDate": "1998-01-09 00:00:00.000",
+ "shippedDate": "1997-12-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 20.25,
+ "shipName": "The Cracker Box",
+ "shipAddress": {
+ "street": "55 Grizzly Peak Rd.",
+ "city": "Butte",
+ "region": "MT",
+ "postalCode": 59801,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10774,
+ "customerID": "FOLKO",
+ "employeeID": 4,
+ "orderDate": "1997-12-11 00:00:00.000",
+ "requiredDate": "1997-12-25 00:00:00.000",
+ "shippedDate": "1997-12-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 48.2,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 2,
+ "discount": 0.25
+ },
+ {
+ "productID": 66,
+ "unitPrice": 17,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10779,
+ "customerID": "MORGK",
+ "employeeID": 3,
+ "orderDate": "1997-12-16 00:00:00.000",
+ "requiredDate": "1998-01-13 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.13,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10780,
+ "customerID": "LILAS",
+ "employeeID": 2,
+ "orderDate": "1997-12-16 00:00:00.000",
+ "requiredDate": "1997-12-30 00:00:00.000",
+ "shippedDate": "1997-12-25 00:00:00.000",
+ "shipVia": 1,
+ "freight": 42.13,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10781,
+ "customerID": "WARTH",
+ "employeeID": 2,
+ "orderDate": "1997-12-17 00:00:00.000",
+ "requiredDate": "1998-01-14 00:00:00.000",
+ "shippedDate": "1997-12-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 73.16,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 3,
+ "discount": 0.2
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 74,
+ "unitPrice": 10,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10783,
+ "customerID": "HANAR",
+ "employeeID": 4,
+ "orderDate": "1997-12-18 00:00:00.000",
+ "requiredDate": "1998-01-15 00:00:00.000",
+ "shippedDate": "1997-12-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 124.98,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10784,
+ "customerID": "MAGAA",
+ "employeeID": 4,
+ "orderDate": "1997-12-18 00:00:00.000",
+ "requiredDate": "1998-01-15 00:00:00.000",
+ "shippedDate": "1997-12-22 00:00:00.000",
+ "shipVia": 3,
+ "freight": 70.09,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 2,
+ "discount": 0.15
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10785,
+ "customerID": "GROSR",
+ "employeeID": 1,
+ "orderDate": "1997-12-18 00:00:00.000",
+ "requiredDate": "1998-01-15 00:00:00.000",
+ "shippedDate": "1997-12-24 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.51,
+ "shipName": "GROSELLA-Restaurante",
+ "shipAddress": {
+ "street": "5ª Ave. Los Palos Grandes",
+ "city": "Caracas",
+ "region": "DF",
+ "postalCode": 1081,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10786,
+ "customerID": "QUEEN",
+ "employeeID": 8,
+ "orderDate": "1997-12-19 00:00:00.000",
+ "requiredDate": "1998-01-16 00:00:00.000",
+ "shippedDate": "1997-12-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 110.87,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0.2
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 42,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10776,
+ "customerID": "ERNSH",
+ "employeeID": 1,
+ "orderDate": "1997-12-15 00:00:00.000",
+ "requiredDate": "1998-01-12 00:00:00.000",
+ "shippedDate": "1997-12-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 351.53,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 16,
+ "discount": 0.05
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 27,
+ "discount": 0.05
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 120,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10787,
+ "customerID": "LAMAI",
+ "employeeID": 2,
+ "orderDate": "1997-12-19 00:00:00.000",
+ "requiredDate": "1998-01-02 00:00:00.000",
+ "shippedDate": "1997-12-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 249.93,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10791,
+ "customerID": "FRANK",
+ "employeeID": 6,
+ "orderDate": "1997-12-23 00:00:00.000",
+ "requiredDate": "1998-01-20 00:00:00.000",
+ "shippedDate": "1998-01-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 16.85,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 14,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10792,
+ "customerID": "WOLZA",
+ "employeeID": 1,
+ "orderDate": "1997-12-23 00:00:00.000",
+ "requiredDate": "1998-01-20 00:00:00.000",
+ "shippedDate": "1997-12-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 23.79,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10793,
+ "customerID": "AROUT",
+ "employeeID": 3,
+ "orderDate": "1997-12-24 00:00:00.000",
+ "requiredDate": "1998-01-21 00:00:00.000",
+ "shippedDate": "1998-01-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.52,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10794,
+ "customerID": "QUEDE",
+ "employeeID": 6,
+ "orderDate": "1997-12-24 00:00:00.000",
+ "requiredDate": "1998-01-21 00:00:00.000",
+ "shippedDate": "1998-01-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 21.49,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 15,
+ "discount": 0.2
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 6,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10790,
+ "customerID": "GOURL",
+ "employeeID": 6,
+ "orderDate": "1997-12-22 00:00:00.000",
+ "requiredDate": "1998-01-19 00:00:00.000",
+ "shippedDate": "1997-12-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 28.23,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 3,
+ "discount": 0.15
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10796,
+ "customerID": "HILAA",
+ "employeeID": 3,
+ "orderDate": "1997-12-25 00:00:00.000",
+ "requiredDate": "1998-01-22 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 26.52,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 21,
+ "discount": 0.2
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 24,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10788,
+ "customerID": "QUICK",
+ "employeeID": 1,
+ "orderDate": "1997-12-22 00:00:00.000",
+ "requiredDate": "1998-01-19 00:00:00.000",
+ "shippedDate": "1998-01-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 42.7,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 50,
+ "discount": 0.05
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10789,
+ "customerID": "FOLIG",
+ "employeeID": 1,
+ "orderDate": "1997-12-22 00:00:00.000",
+ "requiredDate": "1998-01-19 00:00:00.000",
+ "shippedDate": "1997-12-31 00:00:00.000",
+ "shipVia": 2,
+ "freight": 100.6,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10800,
+ "customerID": "SEVES",
+ "employeeID": 1,
+ "orderDate": "1997-12-26 00:00:00.000",
+ "requiredDate": "1998-01-23 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 137.44,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 50,
+ "discount": 0.1
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 7,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10801,
+ "customerID": "BOLID",
+ "employeeID": 4,
+ "orderDate": "1997-12-29 00:00:00.000",
+ "requiredDate": "1998-01-26 00:00:00.000",
+ "shippedDate": "1997-12-31 00:00:00.000",
+ "shipVia": 2,
+ "freight": 97.09,
+ "shipName": "Bólido Comidas preparadas",
+ "shipAddress": {
+ "street": "C/ Araquil 67",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28023,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 20,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10795,
+ "customerID": "ERNSH",
+ "employeeID": 8,
+ "orderDate": "1997-12-24 00:00:00.000",
+ "requiredDate": "1998-01-21 00:00:00.000",
+ "shippedDate": "1998-01-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 126.66,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 65,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10798,
+ "customerID": "ISLAT",
+ "employeeID": 2,
+ "orderDate": "1997-12-26 00:00:00.000",
+ "requiredDate": "1998-01-23 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.33,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10799,
+ "customerID": "KOENE",
+ "employeeID": 9,
+ "orderDate": "1997-12-26 00:00:00.000",
+ "requiredDate": "1998-02-06 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 30.76,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10805,
+ "customerID": "THEBI",
+ "employeeID": 2,
+ "orderDate": "1997-12-30 00:00:00.000",
+ "requiredDate": "1998-01-27 00:00:00.000",
+ "shippedDate": "1998-01-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 237.34,
+ "shipName": "The Big Cheese",
+ "shipAddress": {
+ "street": "89 Jefferson Way Suite 2",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97201,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10802,
+ "customerID": "SIMOB",
+ "employeeID": 4,
+ "orderDate": "1997-12-29 00:00:00.000",
+ "requiredDate": "1998-01-26 00:00:00.000",
+ "shippedDate": "1998-01-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 257.26,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 25,
+ "discount": 0.25
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 60,
+ "discount": 0.25
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 5,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10803,
+ "customerID": "WELLI",
+ "employeeID": 4,
+ "orderDate": "1997-12-30 00:00:00.000",
+ "requiredDate": "1998-01-27 00:00:00.000",
+ "shippedDate": "1998-01-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.23,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 24,
+ "discount": 0.05
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10808,
+ "customerID": "OLDWO",
+ "employeeID": 2,
+ "orderDate": "1998-01-01 00:00:00.000",
+ "requiredDate": "1998-01-29 00:00:00.000",
+ "shippedDate": "1998-01-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 45.53,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 50,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10810,
+ "customerID": "LAUGB",
+ "employeeID": 2,
+ "orderDate": "1998-01-01 00:00:00.000",
+ "requiredDate": "1998-01-29 00:00:00.000",
+ "shippedDate": "1998-01-07 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.33,
+ "shipName": "Laughing Bacchus Wine Cellars",
+ "shipAddress": {
+ "street": "2319 Elm St.",
+ "city": "Vancouver",
+ "region": "BC",
+ "postalCode": "V3F 2K1",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10811,
+ "customerID": "LINOD",
+ "employeeID": 8,
+ "orderDate": "1998-01-02 00:00:00.000",
+ "requiredDate": "1998-01-30 00:00:00.000",
+ "shippedDate": "1998-01-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 31.22,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10804,
+ "customerID": "SEVES",
+ "employeeID": 6,
+ "orderDate": "1997-12-30 00:00:00.000",
+ "requiredDate": "1998-01-27 00:00:00.000",
+ "shippedDate": "1998-01-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 27.33,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 4,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10814,
+ "customerID": "VICTE",
+ "employeeID": 3,
+ "orderDate": "1998-01-05 00:00:00.000",
+ "requiredDate": "1998-02-02 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 130.94,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 48,
+ "unitPrice": 12.75,
+ "quantity": 8,
+ "discount": 0.15
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10812,
+ "customerID": "REGGC",
+ "employeeID": 5,
+ "orderDate": "1998-01-02 00:00:00.000",
+ "requiredDate": "1998-01-30 00:00:00.000",
+ "shippedDate": "1998-01-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 59.78,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 16,
+ "discount": 0.1
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10817,
+ "customerID": "KOENE",
+ "employeeID": 3,
+ "orderDate": "1998-01-06 00:00:00.000",
+ "requiredDate": "1998-01-20 00:00:00.000",
+ "shippedDate": "1998-01-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 306.07,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 60,
+ "discount": 0.15
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 25,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10806,
+ "customerID": "VICTE",
+ "employeeID": 3,
+ "orderDate": "1997-12-31 00:00:00.000",
+ "requiredDate": "1998-01-28 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 22.11,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 10,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10816,
+ "customerID": "GREAL",
+ "employeeID": 4,
+ "orderDate": "1998-01-06 00:00:00.000",
+ "requiredDate": "1998-02-03 00:00:00.000",
+ "shippedDate": "1998-02-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 719.78,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10813,
+ "customerID": "RICAR",
+ "employeeID": 1,
+ "orderDate": "1998-01-05 00:00:00.000",
+ "requiredDate": "1998-02-02 00:00:00.000",
+ "shippedDate": "1998-01-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 47.38,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10818,
+ "customerID": "MAGAA",
+ "employeeID": 7,
+ "orderDate": "1998-01-07 00:00:00.000",
+ "requiredDate": "1998-02-04 00:00:00.000",
+ "shippedDate": "1998-01-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 65.48,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10819,
+ "customerID": "CACTU",
+ "employeeID": 2,
+ "orderDate": "1998-01-07 00:00:00.000",
+ "requiredDate": "1998-02-04 00:00:00.000",
+ "shippedDate": "1998-01-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 19.76,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10821,
+ "customerID": "SPLIR",
+ "employeeID": 1,
+ "orderDate": "1998-01-08 00:00:00.000",
+ "requiredDate": "1998-02-05 00:00:00.000",
+ "shippedDate": "1998-01-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 36.68,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10822,
+ "customerID": "TRAIH",
+ "employeeID": 6,
+ "orderDate": "1998-01-08 00:00:00.000",
+ "requiredDate": "1998-02-05 00:00:00.000",
+ "shippedDate": "1998-01-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7,
+ "shipName": "Trail's Head Gourmet Provisioners",
+ "shipAddress": {
+ "street": "722 DaVinci Blvd.",
+ "city": "Kirkland",
+ "region": "WA",
+ "postalCode": 98034,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10823,
+ "customerID": "LILAS",
+ "employeeID": 5,
+ "orderDate": "1998-01-09 00:00:00.000",
+ "requiredDate": "1998-02-06 00:00:00.000",
+ "shippedDate": "1998-01-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 163.97,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10824,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1998-01-09 00:00:00.000",
+ "requiredDate": "1998-02-06 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.23,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10825,
+ "customerID": "DRACD",
+ "employeeID": 1,
+ "orderDate": "1998-01-09 00:00:00.000",
+ "requiredDate": "1998-02-06 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 79.25,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10826,
+ "customerID": "BLONP",
+ "employeeID": 6,
+ "orderDate": "1998-01-12 00:00:00.000",
+ "requiredDate": "1998-02-09 00:00:00.000",
+ "shippedDate": "1998-02-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 7.09,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10827,
+ "customerID": "BONAP",
+ "employeeID": 1,
+ "orderDate": "1998-01-12 00:00:00.000",
+ "requiredDate": "1998-01-26 00:00:00.000",
+ "shippedDate": "1998-02-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 63.54,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10828,
+ "customerID": "RANCH",
+ "employeeID": 9,
+ "orderDate": "1998-01-13 00:00:00.000",
+ "requiredDate": "1998-01-27 00:00:00.000",
+ "shippedDate": "1998-02-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 90.85,
+ "shipName": "Rancho grande",
+ "shipAddress": {
+ "street": "Av. del Libertador 900",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10829,
+ "customerID": "ISLAT",
+ "employeeID": 9,
+ "orderDate": "1998-01-13 00:00:00.000",
+ "requiredDate": "1998-02-10 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 154.72,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10830,
+ "customerID": "TRADH",
+ "employeeID": 4,
+ "orderDate": "1998-01-13 00:00:00.000",
+ "requiredDate": "1998-02-24 00:00:00.000",
+ "shippedDate": "1998-01-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 81.83,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10831,
+ "customerID": "SANTG",
+ "employeeID": 3,
+ "orderDate": "1998-01-14 00:00:00.000",
+ "requiredDate": "1998-02-11 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 72.19,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10832,
+ "customerID": "LAMAI",
+ "employeeID": 2,
+ "orderDate": "1998-01-14 00:00:00.000",
+ "requiredDate": "1998-02-11 00:00:00.000",
+ "shippedDate": "1998-01-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 43.26,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 3,
+ "discount": 0.2
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 16,
+ "discount": 0.2
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10833,
+ "customerID": "OTTIK",
+ "employeeID": 6,
+ "orderDate": "1998-01-15 00:00:00.000",
+ "requiredDate": "1998-02-12 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 71.49,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 9,
+ "discount": 0.1
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 9,
+ "discount": 0.1
+ },
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10834,
+ "customerID": "TRADH",
+ "employeeID": 1,
+ "orderDate": "1998-01-15 00:00:00.000",
+ "requiredDate": "1998-02-12 00:00:00.000",
+ "shippedDate": "1998-01-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 29.78,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 8,
+ "discount": 0.05
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10838,
+ "customerID": "LINOD",
+ "employeeID": 3,
+ "orderDate": "1998-01-19 00:00:00.000",
+ "requiredDate": "1998-02-16 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 59.28,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 4,
+ "discount": 0.25
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 25,
+ "discount": 0.25
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 50,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10839,
+ "customerID": "TRADH",
+ "employeeID": 3,
+ "orderDate": "1998-01-19 00:00:00.000",
+ "requiredDate": "1998-02-16 00:00:00.000",
+ "shippedDate": "1998-01-22 00:00:00.000",
+ "shipVia": 3,
+ "freight": 35.43,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10840,
+ "customerID": "LINOD",
+ "employeeID": 4,
+ "orderDate": "1998-01-19 00:00:00.000",
+ "requiredDate": "1998-03-02 00:00:00.000",
+ "shippedDate": "1998-02-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.71,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 6,
+ "discount": 0.2
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10841,
+ "customerID": "SUPRD",
+ "employeeID": 5,
+ "orderDate": "1998-01-20 00:00:00.000",
+ "requiredDate": "1998-02-17 00:00:00.000",
+ "shippedDate": "1998-01-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 424.3,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10842,
+ "customerID": "TORTU",
+ "employeeID": 1,
+ "orderDate": "1998-01-20 00:00:00.000",
+ "requiredDate": "1998-02-17 00:00:00.000",
+ "shippedDate": "1998-01-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 54.42,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10836,
+ "customerID": "ERNSH",
+ "employeeID": 7,
+ "orderDate": "1998-01-16 00:00:00.000",
+ "requiredDate": "1998-02-13 00:00:00.000",
+ "shippedDate": "1998-01-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 411.88,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 52,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10835,
+ "customerID": "ALFKI",
+ "employeeID": 1,
+ "orderDate": "1998-01-15 00:00:00.000",
+ "requiredDate": "1998-02-12 00:00:00.000",
+ "shippedDate": "1998-01-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 69.53,
+ "shipName": "Alfred's Futterkiste",
+ "shipAddress": {
+ "street": "Obere Str. 57",
+ "city": "Berlin",
+ "region": "NULL",
+ "postalCode": 12209,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 2,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10837,
+ "customerID": "BERGS",
+ "employeeID": 9,
+ "orderDate": "1998-01-16 00:00:00.000",
+ "requiredDate": "1998-02-13 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.32,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 40,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10845,
+ "customerID": "QUICK",
+ "employeeID": 8,
+ "orderDate": "1998-01-21 00:00:00.000",
+ "requiredDate": "1998-02-04 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 212.98,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 70,
+ "discount": 0.1
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 42,
+ "discount": 0.1
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 60,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 48,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10848,
+ "customerID": "CONSH",
+ "employeeID": 7,
+ "orderDate": "1998-01-23 00:00:00.000",
+ "requiredDate": "1998-02-20 00:00:00.000",
+ "shippedDate": "1998-01-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 38.24,
+ "shipName": "Consolidated Holdings",
+ "shipAddress": {
+ "street": "Berkeley Gardens 12 Brewery",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX1 6LT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 97,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 5,
+ "unitPrice": 21.35,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10850,
+ "customerID": "VICTE",
+ "employeeID": 1,
+ "orderDate": "1998-01-23 00:00:00.000",
+ "requiredDate": "1998-03-06 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 49.19,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 4,
+ "discount": 0.15
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10847,
+ "customerID": "SAVEA",
+ "employeeID": 4,
+ "orderDate": "1998-01-22 00:00:00.000",
+ "requiredDate": "1998-02-05 00:00:00.000",
+ "shippedDate": "1998-02-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 487.57,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 80,
+ "discount": 0.2
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 37,
+ "unitPrice": 26,
+ "quantity": 60,
+ "discount": 0.2
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 36,
+ "discount": 0.2
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 45,
+ "discount": 0.2
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 55,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10846,
+ "customerID": "SUPRD",
+ "employeeID": 2,
+ "orderDate": "1998-01-22 00:00:00.000",
+ "requiredDate": "1998-03-05 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 56.46,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10849,
+ "customerID": "KOENE",
+ "employeeID": 9,
+ "orderDate": "1998-01-23 00:00:00.000",
+ "requiredDate": "1998-02-20 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.56,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 49,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 18,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10851,
+ "customerID": "RICAR",
+ "employeeID": 5,
+ "orderDate": "1998-01-26 00:00:00.000",
+ "requiredDate": "1998-02-23 00:00:00.000",
+ "shippedDate": "1998-02-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 160.55,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 42,
+ "discount": 0.05
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 5,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10852,
+ "customerID": "RATTC",
+ "employeeID": 8,
+ "orderDate": "1998-01-26 00:00:00.000",
+ "requiredDate": "1998-02-09 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 174.05,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10854,
+ "customerID": "ERNSH",
+ "employeeID": 3,
+ "orderDate": "1998-01-27 00:00:00.000",
+ "requiredDate": "1998-02-24 00:00:00.000",
+ "shippedDate": "1998-02-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 100.22,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 100,
+ "discount": 0.15
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 65,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10855,
+ "customerID": "OLDWO",
+ "employeeID": 3,
+ "orderDate": "1998-01-27 00:00:00.000",
+ "requiredDate": "1998-02-24 00:00:00.000",
+ "shippedDate": "1998-02-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 170.97,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10856,
+ "customerID": "ANTON",
+ "employeeID": 3,
+ "orderDate": "1998-01-28 00:00:00.000",
+ "requiredDate": "1998-02-25 00:00:00.000",
+ "shippedDate": "1998-02-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.43,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10857,
+ "customerID": "BERGS",
+ "employeeID": 8,
+ "orderDate": "1998-01-28 00:00:00.000",
+ "requiredDate": "1998-02-25 00:00:00.000",
+ "shippedDate": "1998-02-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 188.85,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 35,
+ "discount": 0.25
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 10,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10858,
+ "customerID": "LACOR",
+ "employeeID": 2,
+ "orderDate": "1998-01-29 00:00:00.000",
+ "requiredDate": "1998-02-26 00:00:00.000",
+ "shippedDate": "1998-02-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 52.51,
+ "shipName": "La corne d'abondance",
+ "shipAddress": {
+ "street": "67 avenue de l'Europe",
+ "city": "Versailles",
+ "region": "NULL",
+ "postalCode": 78000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10859,
+ "customerID": "FRANK",
+ "employeeID": 1,
+ "orderDate": "1998-01-29 00:00:00.000",
+ "requiredDate": "1998-02-26 00:00:00.000",
+ "shippedDate": "1998-02-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 76.1,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 35,
+ "discount": 0.25
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10860,
+ "customerID": "FRANR",
+ "employeeID": 3,
+ "orderDate": "1998-01-29 00:00:00.000",
+ "requiredDate": "1998-02-26 00:00:00.000",
+ "shippedDate": "1998-02-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 19.26,
+ "shipName": "France restauration",
+ "shipAddress": {
+ "street": "54 rue Royale",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10861,
+ "customerID": "WHITC",
+ "employeeID": 4,
+ "orderDate": "1998-01-30 00:00:00.000",
+ "requiredDate": "1998-02-27 00:00:00.000",
+ "shippedDate": "1998-02-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 14.93,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10862,
+ "customerID": "LEHMS",
+ "employeeID": 8,
+ "orderDate": "1998-01-30 00:00:00.000",
+ "requiredDate": "1998-03-13 00:00:00.000",
+ "shippedDate": "1998-02-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 53.23,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10863,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1998-02-02 00:00:00.000",
+ "requiredDate": "1998-03-02 00:00:00.000",
+ "shippedDate": "1998-02-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 30.26,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 12,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10864,
+ "customerID": "AROUT",
+ "employeeID": 4,
+ "orderDate": "1998-02-02 00:00:00.000",
+ "requiredDate": "1998-03-02 00:00:00.000",
+ "shippedDate": "1998-02-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.04,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10865,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1998-02-02 00:00:00.000",
+ "requiredDate": "1998-02-16 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 348.14,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 80,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10869,
+ "customerID": "SEVES",
+ "employeeID": 5,
+ "orderDate": "1998-02-04 00:00:00.000",
+ "requiredDate": "1998-03-04 00:00:00.000",
+ "shippedDate": "1998-02-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 143.28,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10870,
+ "customerID": "WOLZA",
+ "employeeID": 5,
+ "orderDate": "1998-02-04 00:00:00.000",
+ "requiredDate": "1998-03-04 00:00:00.000",
+ "shippedDate": "1998-02-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 12.04,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10871,
+ "customerID": "BONAP",
+ "employeeID": 9,
+ "orderDate": "1998-02-05 00:00:00.000",
+ "requiredDate": "1998-03-05 00:00:00.000",
+ "shippedDate": "1998-02-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 112.27,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 50,
+ "discount": 0.05
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 16,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10872,
+ "customerID": "GODOS",
+ "employeeID": 5,
+ "orderDate": "1998-02-05 00:00:00.000",
+ "requiredDate": "1998-03-05 00:00:00.000",
+ "shippedDate": "1998-02-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 175.32,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 21,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10873,
+ "customerID": "WILMK",
+ "employeeID": 4,
+ "orderDate": "1998-02-06 00:00:00.000",
+ "requiredDate": "1998-03-06 00:00:00.000",
+ "shippedDate": "1998-02-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.82,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10866,
+ "customerID": "BERGS",
+ "employeeID": 5,
+ "orderDate": "1998-02-03 00:00:00.000",
+ "requiredDate": "1998-03-03 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 109.11,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 6,
+ "discount": 0.25
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 40,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10876,
+ "customerID": "BONAP",
+ "employeeID": 7,
+ "orderDate": "1998-02-09 00:00:00.000",
+ "requiredDate": "1998-03-09 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 60.42,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10877,
+ "customerID": "RICAR",
+ "employeeID": 1,
+ "orderDate": "1998-02-09 00:00:00.000",
+ "requiredDate": "1998-03-09 00:00:00.000",
+ "shippedDate": "1998-02-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 38.06,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10868,
+ "customerID": "QUEEN",
+ "employeeID": 7,
+ "orderDate": "1998-02-04 00:00:00.000",
+ "requiredDate": "1998-03-04 00:00:00.000",
+ "shippedDate": "1998-02-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 191.27,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 42,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10875,
+ "customerID": "BERGS",
+ "employeeID": 4,
+ "orderDate": "1998-02-06 00:00:00.000",
+ "requiredDate": "1998-03-06 00:00:00.000",
+ "shippedDate": "1998-03-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 32.37,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 21,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10882,
+ "customerID": "SAVEA",
+ "employeeID": 4,
+ "orderDate": "1998-02-11 00:00:00.000",
+ "requiredDate": "1998-03-11 00:00:00.000",
+ "shippedDate": "1998-02-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 23.1,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 32,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10884,
+ "customerID": "LETSS",
+ "employeeID": 4,
+ "orderDate": "1998-02-12 00:00:00.000",
+ "requiredDate": "1998-03-12 00:00:00.000",
+ "shippedDate": "1998-02-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 90.97,
+ "shipName": "Let's Stop N Shop",
+ "shipAddress": {
+ "street": "87 Polk St. Suite 5",
+ "city": "San Francisco",
+ "region": "CA",
+ "postalCode": 94117,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 21,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10885,
+ "customerID": "SUPRD",
+ "employeeID": 6,
+ "orderDate": "1998-02-12 00:00:00.000",
+ "requiredDate": "1998-03-12 00:00:00.000",
+ "shippedDate": "1998-02-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 5.64,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10886,
+ "customerID": "HANAR",
+ "employeeID": 1,
+ "orderDate": "1998-02-13 00:00:00.000",
+ "requiredDate": "1998-03-13 00:00:00.000",
+ "shippedDate": "1998-03-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.99,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 70,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10880,
+ "customerID": "FOLKO",
+ "employeeID": 7,
+ "orderDate": "1998-02-10 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-02-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 88.01,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10879,
+ "customerID": "WILMK",
+ "employeeID": 3,
+ "orderDate": "1998-02-10 00:00:00.000",
+ "requiredDate": "1998-03-10 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 8.5,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10889,
+ "customerID": "RATTC",
+ "employeeID": 9,
+ "orderDate": "1998-02-16 00:00:00.000",
+ "requiredDate": "1998-03-16 00:00:00.000",
+ "shippedDate": "1998-02-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 280.61,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10890,
+ "customerID": "DUMON",
+ "employeeID": 7,
+ "orderDate": "1998-02-16 00:00:00.000",
+ "requiredDate": "1998-03-16 00:00:00.000",
+ "shippedDate": "1998-02-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 32.76,
+ "shipName": "Du monde entier",
+ "shipAddress": {
+ "street": "67 rue des Cinquante Otages",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10893,
+ "customerID": "KOENE",
+ "employeeID": 9,
+ "orderDate": "1998-02-18 00:00:00.000",
+ "requiredDate": "1998-03-18 00:00:00.000",
+ "shippedDate": "1998-02-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 77.78,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10894,
+ "customerID": "SAVEA",
+ "employeeID": 1,
+ "orderDate": "1998-02-18 00:00:00.000",
+ "requiredDate": "1998-03-18 00:00:00.000",
+ "shippedDate": "1998-02-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 116.13,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 28,
+ "discount": 0.05
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 50,
+ "discount": 0.05
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 120,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10888,
+ "customerID": "GODOS",
+ "employeeID": 1,
+ "orderDate": "1998-02-16 00:00:00.000",
+ "requiredDate": "1998-03-16 00:00:00.000",
+ "shippedDate": "1998-02-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 51.87,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10898,
+ "customerID": "OCEAN",
+ "employeeID": 4,
+ "orderDate": "1998-02-20 00:00:00.000",
+ "requiredDate": "1998-03-20 00:00:00.000",
+ "shippedDate": "1998-03-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.27,
+ "shipName": "Océano Atlántico Ltda.",
+ "shipAddress": {
+ "street": "Ing. Gustavo Moncada 8585 Piso 20-A",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10899,
+ "customerID": "LILAS",
+ "employeeID": 5,
+ "orderDate": "1998-02-20 00:00:00.000",
+ "requiredDate": "1998-03-20 00:00:00.000",
+ "shippedDate": "1998-02-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.21,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 8,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10901,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1998-02-23 00:00:00.000",
+ "requiredDate": "1998-03-23 00:00:00.000",
+ "shippedDate": "1998-02-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 62.09,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10902,
+ "customerID": "FOLKO",
+ "employeeID": 1,
+ "orderDate": "1998-02-23 00:00:00.000",
+ "requiredDate": "1998-03-23 00:00:00.000",
+ "shippedDate": "1998-03-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 44.15,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 30,
+ "discount": 0.15
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 6,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10903,
+ "customerID": "HANAR",
+ "employeeID": 3,
+ "orderDate": "1998-02-24 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 36.71,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10896,
+ "customerID": "MAISD",
+ "employeeID": 7,
+ "orderDate": "1998-02-19 00:00:00.000",
+ "requiredDate": "1998-03-19 00:00:00.000",
+ "shippedDate": "1998-02-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 32.45,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10904,
+ "customerID": "WHITC",
+ "employeeID": 3,
+ "orderDate": "1998-02-24 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-02-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 162.95,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10895,
+ "customerID": "ERNSH",
+ "employeeID": 3,
+ "orderDate": "1998-02-18 00:00:00.000",
+ "requiredDate": "1998-03-18 00:00:00.000",
+ "shippedDate": "1998-02-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 162.75,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 91,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 100,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 110,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 45,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10897,
+ "customerID": "HUNGO",
+ "employeeID": 3,
+ "orderDate": "1998-02-19 00:00:00.000",
+ "requiredDate": "1998-03-19 00:00:00.000",
+ "shippedDate": "1998-02-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 603.54,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 80,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 36,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10909,
+ "customerID": "SANTG",
+ "employeeID": 1,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 53.05,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10910,
+ "customerID": "WILMK",
+ "employeeID": 1,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 38.11,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10911,
+ "customerID": "GODOS",
+ "employeeID": 3,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 38.19,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10912,
+ "customerID": "HUNGO",
+ "employeeID": 2,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 580.91,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 60,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10913,
+ "customerID": "QUEEN",
+ "employeeID": 4,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 33.05,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10917,
+ "customerID": "ROMEY",
+ "employeeID": 4,
+ "orderDate": "1998-03-02 00:00:00.000",
+ "requiredDate": "1998-03-30 00:00:00.000",
+ "shippedDate": "1998-03-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.29,
+ "shipName": "Romero y tomillo",
+ "shipAddress": {
+ "street": "Gran Vía 1",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28001,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 1,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10916,
+ "customerID": "RANCH",
+ "employeeID": 1,
+ "orderDate": "1998-02-27 00:00:00.000",
+ "requiredDate": "1998-03-27 00:00:00.000",
+ "shippedDate": "1998-03-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 63.77,
+ "shipName": "Rancho grande",
+ "shipAddress": {
+ "street": "Av. del Libertador 900",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10918,
+ "customerID": "BOTTM",
+ "employeeID": 3,
+ "orderDate": "1998-03-02 00:00:00.000",
+ "requiredDate": "1998-03-30 00:00:00.000",
+ "shippedDate": "1998-03-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 48.83,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 60,
+ "discount": 0.25
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 25,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10919,
+ "customerID": "LINOD",
+ "employeeID": 2,
+ "orderDate": "1998-03-02 00:00:00.000",
+ "requiredDate": "1998-03-30 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 19.8,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10908,
+ "customerID": "REGGC",
+ "employeeID": 4,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 32.96,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 14,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10921,
+ "customerID": "VAFFE",
+ "employeeID": 1,
+ "orderDate": "1998-03-03 00:00:00.000",
+ "requiredDate": "1998-04-14 00:00:00.000",
+ "shippedDate": "1998-03-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 176.48,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10915,
+ "customerID": "TORTU",
+ "employeeID": 2,
+ "orderDate": "1998-02-27 00:00:00.000",
+ "requiredDate": "1998-03-27 00:00:00.000",
+ "shippedDate": "1998-03-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.51,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10925,
+ "customerID": "HANAR",
+ "employeeID": 3,
+ "orderDate": "1998-03-04 00:00:00.000",
+ "requiredDate": "1998-04-01 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.27,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 25,
+ "discount": 0.15
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 12,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10926,
+ "customerID": "ANATR",
+ "employeeID": 4,
+ "orderDate": "1998-03-04 00:00:00.000",
+ "requiredDate": "1998-04-01 00:00:00.000",
+ "shippedDate": "1998-03-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 39.92,
+ "shipName": "Ana Trujillo Emparedados y helados",
+ "shipAddress": {
+ "street": "Avda. de la Constitución 2222",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5021,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10927,
+ "customerID": "LACOR",
+ "employeeID": 4,
+ "orderDate": "1998-03-05 00:00:00.000",
+ "requiredDate": "1998-04-02 00:00:00.000",
+ "shippedDate": "1998-04-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 19.79,
+ "shipName": "La corne d'abondance",
+ "shipAddress": {
+ "street": "67 avenue de l'Europe",
+ "city": "Versailles",
+ "region": "NULL",
+ "postalCode": 78000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10928,
+ "customerID": "GALED",
+ "employeeID": 1,
+ "orderDate": "1998-03-05 00:00:00.000",
+ "requiredDate": "1998-04-02 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.36,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10929,
+ "customerID": "FRANK",
+ "employeeID": 6,
+ "orderDate": "1998-03-05 00:00:00.000",
+ "requiredDate": "1998-04-02 00:00:00.000",
+ "shippedDate": "1998-03-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 33.93,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 49,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10930,
+ "customerID": "SUPRD",
+ "employeeID": 4,
+ "orderDate": "1998-03-06 00:00:00.000",
+ "requiredDate": "1998-04-17 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 15.55,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 36,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10931,
+ "customerID": "RICSU",
+ "employeeID": 4,
+ "orderDate": "1998-03-06 00:00:00.000",
+ "requiredDate": "1998-03-20 00:00:00.000",
+ "shippedDate": "1998-03-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.6,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 42,
+ "discount": 0.15
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10932,
+ "customerID": "BONAP",
+ "employeeID": 8,
+ "orderDate": "1998-03-06 00:00:00.000",
+ "requiredDate": "1998-04-03 00:00:00.000",
+ "shippedDate": "1998-03-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 134.64,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 14,
+ "discount": 0.1
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10933,
+ "customerID": "ISLAT",
+ "employeeID": 6,
+ "orderDate": "1998-03-06 00:00:00.000",
+ "requiredDate": "1998-04-03 00:00:00.000",
+ "shippedDate": "1998-03-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 54.15,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10935,
+ "customerID": "WELLI",
+ "employeeID": 4,
+ "orderDate": "1998-03-09 00:00:00.000",
+ "requiredDate": "1998-04-06 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 47.59,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 4,
+ "discount": 0.25
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 8,
+ "discount": 0.25
+ },
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10937,
+ "customerID": "CACTU",
+ "employeeID": 7,
+ "orderDate": "1998-03-10 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 31.51,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10938,
+ "customerID": "QUICK",
+ "employeeID": 3,
+ "orderDate": "1998-03-10 00:00:00.000",
+ "requiredDate": "1998-04-07 00:00:00.000",
+ "shippedDate": "1998-03-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 31.89,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 24,
+ "discount": 0.25
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 49,
+ "discount": 0.25
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10939,
+ "customerID": "MAGAA",
+ "employeeID": 2,
+ "orderDate": "1998-03-10 00:00:00.000",
+ "requiredDate": "1998-04-07 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 76.33,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 10,
+ "discount": 0.15
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 40,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10940,
+ "customerID": "BONAP",
+ "employeeID": 8,
+ "orderDate": "1998-03-11 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-03-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 19.77,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10941,
+ "customerID": "SAVEA",
+ "employeeID": 7,
+ "orderDate": "1998-03-11 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-03-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 400.81,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 44,
+ "discount": 0.25
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 80,
+ "discount": 0.25
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10922,
+ "customerID": "HANAR",
+ "employeeID": 5,
+ "orderDate": "1998-03-03 00:00:00.000",
+ "requiredDate": "1998-03-31 00:00:00.000",
+ "shippedDate": "1998-03-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 62.74,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10923,
+ "customerID": "LAMAI",
+ "employeeID": 7,
+ "orderDate": "1998-03-03 00:00:00.000",
+ "requiredDate": "1998-04-14 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 68.26,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 24,
+ "discount": 0.2
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10924,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1998-03-04 00:00:00.000",
+ "requiredDate": "1998-04-01 00:00:00.000",
+ "shippedDate": "1998-04-08 00:00:00.000",
+ "shipVia": 2,
+ "freight": 151.52,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10943,
+ "customerID": "BSBEV",
+ "employeeID": 4,
+ "orderDate": "1998-03-11 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-03-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.17,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10944,
+ "customerID": "BOTTM",
+ "employeeID": 6,
+ "orderDate": "1998-03-12 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 52.92,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 5,
+ "discount": 0.25
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 18,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10945,
+ "customerID": "MORGK",
+ "employeeID": 4,
+ "orderDate": "1998-03-12 00:00:00.000",
+ "requiredDate": "1998-04-09 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 10.22,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ }
+]
diff --git a/vue-options-api-demos/grid/common/northwind/products.json b/vue-options-api-demos/grid/common/northwind/products.json
new file mode 100644
index 00000000..36b06995
--- /dev/null
+++ b/vue-options-api-demos/grid/common/northwind/products.json
@@ -0,0 +1,927 @@
+
+[
+ {
+ "productID" : 4,
+ "supplierID" : 2,
+ "categoryID" : 2,
+ "quantityPerUnit" : "48 - 6 oz jars",
+ "unitPrice" : 22,
+ "unitsInStock" : 53,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Chef Anton's Cajun Seasoning"
+ },
+ {
+ "productID" : 5,
+ "supplierID" : 2,
+ "categoryID" : 2,
+ "quantityPerUnit" : "36 boxes",
+ "unitPrice" : 21.35,
+ "unitsInStock" : 0,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : true,
+ "name" : "Chef Anton's Gumbo Mix"
+ },
+ {
+ "productID" : 6,
+ "supplierID" : 3,
+ "categoryID" : 2,
+ "quantityPerUnit" : "12 - 8 oz jars",
+ "unitPrice" : 25,
+ "unitsInStock" : 120,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 25,
+ "discontinued" : false,
+ "name" : "Grandma's Boysenberry Spread"
+ },
+ {
+ "productID" : 7,
+ "supplierID" : 3,
+ "categoryID" : 7,
+ "quantityPerUnit" : "12 - 1 lb pkgs.",
+ "unitPrice" : 30,
+ "unitsInStock" : 15,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 10,
+ "discontinued" : false,
+ "name" : "Uncle Bob's Organic Dried Pears"
+ },
+ {
+ "productID" : 8,
+ "supplierID" : 3,
+ "categoryID" : 2,
+ "quantityPerUnit" : "12 - 12 oz jars",
+ "unitPrice" : 40,
+ "unitsInStock" : 6,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Northwoods Cranberry Sauce"
+ },
+ {
+ "productID" : 9,
+ "supplierID" : 4,
+ "categoryID" : 6,
+ "quantityPerUnit" : "18 - 500 g pkgs.",
+ "unitPrice" : 97,
+ "unitsInStock" : 29,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : true,
+ "name" : "Mishi Kobe Niku"
+ },
+ {
+ "productID" : 10,
+ "supplierID" : 4,
+ "categoryID" : 8,
+ "quantityPerUnit" : "12 - 200 ml jars",
+ "unitPrice" : 31,
+ "unitsInStock" : 31,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Ikura"
+ },
+ {
+ "productID" : 2,
+ "supplierID" : 1,
+ "categoryID" : 1,
+ "quantityPerUnit" : "24 - 12 oz bottles",
+ "unitPrice" : 19,
+ "unitsInStock" : 17,
+ "unitsOnOrder" : 40,
+ "reorderLevel" : 25,
+ "discontinued" : false,
+ "name" : "Chang"
+ },
+ {
+ "productID" : 3,
+ "supplierID" : 1,
+ "categoryID" : 2,
+ "quantityPerUnit" : "12 - 550 ml bottles",
+ "unitPrice" : 10,
+ "unitsInStock" : 13,
+ "unitsOnOrder" : 70,
+ "reorderLevel" : 25,
+ "discontinued" : false,
+ "name" : "Aniseed Syrup"
+ },
+ {
+ "productID" : 11,
+ "supplierID" : 5,
+ "categoryID" : 4,
+ "quantityPerUnit" : "1 kg pkg.",
+ "unitPrice" : 21,
+ "unitsInStock" : 22,
+ "unitsOnOrder" : 30,
+ "reorderLevel" : 30,
+ "discontinued" : false,
+ "name" : "Queso Cabrales"
+ },
+ {
+ "productID" : 12,
+ "supplierID" : 5,
+ "categoryID" : 4,
+ "quantityPerUnit" : "10 - 500 g pkgs.",
+ "unitPrice" : 38,
+ "unitsInStock" : 86,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Queso Manchego La Pastora"
+ },
+ {
+ "productID" : 13,
+ "supplierID" : 6,
+ "categoryID" : 8,
+ "quantityPerUnit" : "2 kg box",
+ "unitPrice" : 6,
+ "unitsInStock" : 24,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 5,
+ "discontinued" : false,
+ "name" : "Konbu"
+ },
+ {
+ "productID" : 14,
+ "supplierID" : 6,
+ "categoryID" : 7,
+ "quantityPerUnit" : "40 - 100 g pkgs.",
+ "unitPrice" : 23.25,
+ "unitsInStock" : 35,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Tofu"
+ },
+ {
+ "productID" : 15,
+ "supplierID" : 6,
+ "categoryID" : 2,
+ "quantityPerUnit" : "24 - 250 ml bottles",
+ "unitPrice" : 15.5,
+ "unitsInStock" : 39,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 5,
+ "discontinued" : false,
+ "name" : "Genen Shouyu"
+ },
+ {
+ "productID" : 1,
+ "supplierID" : 1,
+ "categoryID" : 1,
+ "quantityPerUnit" : "10 boxes x 20 bags",
+ "unitPrice" : 18,
+ "unitsInStock" : 39,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 10,
+ "discontinued" : false,
+ "name" : "Chai"
+ },
+ {
+ "productID" : 16,
+ "supplierID" : 7,
+ "categoryID" : 3,
+ "quantityPerUnit" : "32 - 500 g boxes",
+ "unitPrice" : 17.45,
+ "unitsInStock" : 29,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 10,
+ "discontinued" : false,
+ "name" : "Pavlova"
+ },
+ {
+ "productID" : 17,
+ "supplierID" : 7,
+ "categoryID" : 6,
+ "quantityPerUnit" : "20 - 1 kg tins",
+ "unitPrice" : 39,
+ "unitsInStock" : 0,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : true,
+ "name" : "Alice Mutton"
+ },
+ {
+ "productID" : 18,
+ "supplierID" : 7,
+ "categoryID" : 8,
+ "quantityPerUnit" : "16 kg pkg.",
+ "unitPrice" : 62.5,
+ "unitsInStock" : 42,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Carnarvon Tigers"
+ },
+ {
+ "productID" : 19,
+ "supplierID" : 8,
+ "categoryID" : 3,
+ "quantityPerUnit" : "10 boxes x 12 pieces",
+ "unitPrice" : 9.2,
+ "unitsInStock" : 25,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 5,
+ "discontinued" : false,
+ "name" : "Teatime Chocolate Biscuits"
+ },
+ {
+ "productID" : 20,
+ "supplierID" : 8,
+ "categoryID" : 3,
+ "quantityPerUnit" : "30 gift boxes",
+ "unitPrice" : 81,
+ "unitsInStock" : 40,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Sir Rodney's Marmalade"
+ },
+ {
+ "productID" : 24,
+ "supplierID" : 10,
+ "categoryID" : 1,
+ "quantityPerUnit" : "12 - 355 ml cans",
+ "unitPrice" : 4.5,
+ "unitsInStock" : 20,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : true,
+ "name" : "Guaraná Fantástica"
+ },
+ {
+ "productID" : 25,
+ "supplierID" : 11,
+ "categoryID" : 3,
+ "quantityPerUnit" : "20 - 450 g glasses",
+ "unitPrice" : 14,
+ "unitsInStock" : 76,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 30,
+ "discontinued" : false,
+ "name" : "NuNuCa Nuß-Nougat-Creme"
+ },
+ {
+ "productID" : 26,
+ "supplierID" : 11,
+ "categoryID" : 3,
+ "quantityPerUnit" : "100 - 250 g bags",
+ "unitPrice" : 31.23,
+ "unitsInStock" : 15,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Gumbär Gummibärchen"
+ },
+ {
+ "productID" : 27,
+ "supplierID" : 11,
+ "categoryID" : 3,
+ "quantityPerUnit" : "100 - 100 g pieces",
+ "unitPrice" : 43.9,
+ "unitsInStock" : 49,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 30,
+ "discontinued" : false,
+ "name" : "Schoggi Schokolade"
+ },
+ {
+ "productID" : 28,
+ "supplierID" : 12,
+ "categoryID" : 7,
+ "quantityPerUnit" : "25 - 825 g cans",
+ "unitPrice" : 45.6,
+ "unitsInStock" : 26,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : true,
+ "name" : "Rössle Sauerkraut"
+ },
+ {
+ "productID" : 29,
+ "supplierID" : 12,
+ "categoryID" : 6,
+ "quantityPerUnit" : "50 bags x 30 sausgs.",
+ "unitPrice" : 123.79,
+ "unitsInStock" : 0,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : true,
+ "name" : "Thüringer Rostbratwurst"
+ },
+ {
+ "productID" : 30,
+ "supplierID" : 13,
+ "categoryID" : 8,
+ "quantityPerUnit" : "10 - 200 g glasses",
+ "unitPrice" : 25.89,
+ "unitsInStock" : 10,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 15,
+ "discontinued" : false,
+ "name" : "Nord-Ost Matjeshering"
+ },
+ {
+ "productID" : 31,
+ "supplierID" : 14,
+ "categoryID" : 4,
+ "quantityPerUnit" : "12 - 100 g pkgs",
+ "unitPrice" : 12.5,
+ "unitsInStock" : 0,
+ "unitsOnOrder" : 70,
+ "reorderLevel" : 20,
+ "discontinued" : false,
+ "name" : "Gorgonzola Telino"
+ },
+ {
+ "productID" : 32,
+ "supplierID" : 14,
+ "categoryID" : 4,
+ "quantityPerUnit" : "24 - 200 g pkgs.",
+ "unitPrice" : 32,
+ "unitsInStock" : 9,
+ "unitsOnOrder" : 40,
+ "reorderLevel" : 25,
+ "discontinued" : false,
+ "name" : "Mascarpone Fabioli"
+ },
+ {
+ "productID" : 33,
+ "supplierID" : 15,
+ "categoryID" : 4,
+ "quantityPerUnit" : "500 g",
+ "unitPrice" : 2.5,
+ "unitsInStock" : 112,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 20,
+ "discontinued" : false,
+ "name" : "Geitost"
+ },
+ {
+ "productID" : 34,
+ "supplierID" : 16,
+ "categoryID" : 1,
+ "quantityPerUnit" : "24 - 12 oz bottles",
+ "unitPrice" : 14,
+ "unitsInStock" : 111,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 15,
+ "discontinued" : false,
+ "name" : "Sasquatch Ale"
+ },
+ {
+ "productID" : 22,
+ "supplierID" : 9,
+ "categoryID" : 5,
+ "quantityPerUnit" : "24 - 500 g pkgs.",
+ "unitPrice" : 21,
+ "unitsInStock" : 104,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 25,
+ "discontinued" : false,
+ "name" : "Gustaf's Knäckebröd"
+ },
+ {
+ "productID" : 21,
+ "supplierID" : 8,
+ "categoryID" : 3,
+ "quantityPerUnit" : "24 pkgs. x 4 pieces",
+ "unitPrice" : 10,
+ "unitsInStock" : 3,
+ "unitsOnOrder" : 40,
+ "reorderLevel" : 5,
+ "discontinued" : false,
+ "name" : "Sir Rodney's Scones"
+ },
+ {
+ "productID" : 35,
+ "supplierID" : 16,
+ "categoryID" : 1,
+ "quantityPerUnit" : "24 - 12 oz bottles",
+ "unitPrice" : 18,
+ "unitsInStock" : 20,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 15,
+ "discontinued" : false,
+ "name" : "Steeleye Stout"
+ },
+ {
+ "productID" : 23,
+ "supplierID" : 9,
+ "categoryID" : 5,
+ "quantityPerUnit" : "12 - 250 g pkgs.",
+ "unitPrice" : 9,
+ "unitsInStock" : 61,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 25,
+ "discontinued" : false,
+ "name" : "Tunnbröd"
+ },
+ {
+ "productID" : 37,
+ "supplierID" : 17,
+ "categoryID" : 8,
+ "quantityPerUnit" : "12 - 500 g pkgs.",
+ "unitPrice" : 26,
+ "unitsInStock" : 11,
+ "unitsOnOrder" : 50,
+ "reorderLevel" : 25,
+ "discontinued" : false,
+ "name" : "Gravad lax"
+ },
+ {
+ "productID" : 40,
+ "supplierID" : 19,
+ "categoryID" : 8,
+ "quantityPerUnit" : "24 - 4 oz tins",
+ "unitPrice" : 18.4,
+ "unitsInStock" : 123,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 30,
+ "discontinued" : false,
+ "name" : "Boston Crab Meat"
+ },
+ {
+ "productID" : 38,
+ "supplierID" : 18,
+ "categoryID" : 1,
+ "quantityPerUnit" : "12 - 75 cl bottles",
+ "unitPrice" : 263.5,
+ "unitsInStock" : 17,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 15,
+ "discontinued" : false,
+ "name" : "Côte de Blaye"
+ },
+ {
+ "productID" : 36,
+ "supplierID" : 17,
+ "categoryID" : 8,
+ "quantityPerUnit" : "24 - 250 g jars",
+ "unitPrice" : 19,
+ "unitsInStock" : 112,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 20,
+ "discontinued" : false,
+ "name" : "Inlagd Sill"
+ },
+ {
+ "productID" : 41,
+ "supplierID" : 19,
+ "categoryID" : 8,
+ "quantityPerUnit" : "12 - 12 oz cans",
+ "unitPrice" : 9.65,
+ "unitsInStock" : 85,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 10,
+ "discontinued" : false,
+ "name" : "Jack's New England Clam Chowder"
+ },
+ {
+ "productID" : 43,
+ "supplierID" : 20,
+ "categoryID" : 1,
+ "quantityPerUnit" : "16 - 500 g tins",
+ "unitPrice" : 46,
+ "unitsInStock" : 17,
+ "unitsOnOrder" : 10,
+ "reorderLevel" : 25,
+ "discontinued" : false,
+ "name" : "Ipoh Coffee"
+ },
+ {
+ "productID" : 42,
+ "supplierID" : 20,
+ "categoryID" : 5,
+ "quantityPerUnit" : "32 - 1 kg pkgs.",
+ "unitPrice" : 14,
+ "unitsInStock" : 26,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : true,
+ "name" : "Singaporean Hokkien Fried Mee"
+ },
+ {
+ "productID" : 46,
+ "supplierID" : 21,
+ "categoryID" : 8,
+ "quantityPerUnit" : "4 - 450 g glasses",
+ "unitPrice" : 12,
+ "unitsInStock" : 95,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Spegesild"
+ },
+ {
+ "productID" : 47,
+ "supplierID" : 22,
+ "categoryID" : 3,
+ "quantityPerUnit" : "10 - 4 oz boxes",
+ "unitPrice" : 9.5,
+ "unitsInStock" : 36,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Zaanse koeken"
+ },
+ {
+ "productID" : 48,
+ "supplierID" : 22,
+ "categoryID" : 3,
+ "quantityPerUnit" : "10 pkgs.",
+ "unitPrice" : 12.75,
+ "unitsInStock" : 15,
+ "unitsOnOrder" : 70,
+ "reorderLevel" : 25,
+ "discontinued" : false,
+ "name" : "Chocolade"
+ },
+ {
+ "productID" : 49,
+ "supplierID" : 23,
+ "categoryID" : 3,
+ "quantityPerUnit" : "24 - 50 g pkgs.",
+ "unitPrice" : 20,
+ "unitsInStock" : 10,
+ "unitsOnOrder" : 60,
+ "reorderLevel" : 15,
+ "discontinued" : false,
+ "name" : "Maxilaku"
+ },
+ {
+ "productID" : 50,
+ "supplierID" : 23,
+ "categoryID" : 3,
+ "quantityPerUnit" : "12 - 100 g bars",
+ "unitPrice" : 16.25,
+ "unitsInStock" : 65,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 30,
+ "discontinued" : false,
+ "name" : "Valkoinen suklaa"
+ },
+ {
+ "productID" : 51,
+ "supplierID" : 24,
+ "categoryID" : 7,
+ "quantityPerUnit" : "50 - 300 g pkgs.",
+ "unitPrice" : 53,
+ "unitsInStock" : 20,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 10,
+ "discontinued" : false,
+ "name" : "Manjimup Dried Apples"
+ },
+ {
+ "productID" : 52,
+ "supplierID" : 24,
+ "categoryID" : 5,
+ "quantityPerUnit" : "16 - 2 kg boxes",
+ "unitPrice" : 7,
+ "unitsInStock" : 38,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 25,
+ "discontinued" : false,
+ "name" : "Filo Mix"
+ },
+ {
+ "productID" : 53,
+ "supplierID" : 24,
+ "categoryID" : 6,
+ "quantityPerUnit" : "48 pieces",
+ "unitPrice" : 32.8,
+ "unitsInStock" : 0,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : true,
+ "name" : "Perth Pasties"
+ },
+ {
+ "productID" : 54,
+ "supplierID" : 25,
+ "categoryID" : 6,
+ "quantityPerUnit" : "16 pies",
+ "unitPrice" : 7.45,
+ "unitsInStock" : 21,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 10,
+ "discontinued" : false,
+ "name" : "Tourtière"
+ },
+ {
+ "productID" : 55,
+ "supplierID" : 25,
+ "categoryID" : 6,
+ "quantityPerUnit" : "24 boxes x 2 pies",
+ "unitPrice" : 24,
+ "unitsInStock" : 115,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 20,
+ "discontinued" : false,
+ "name" : "Pâté chinois"
+ },
+ {
+ "productID" : 56,
+ "supplierID" : 26,
+ "categoryID" : 5,
+ "quantityPerUnit" : "24 - 250 g pkgs.",
+ "unitPrice" : 38,
+ "unitsInStock" : 21,
+ "unitsOnOrder" : 10,
+ "reorderLevel" : 30,
+ "discontinued" : false,
+ "name" : "Gnocchi di nonna Alice"
+ },
+ {
+ "productID" : 57,
+ "supplierID" : 26,
+ "categoryID" : 5,
+ "quantityPerUnit" : "24 - 250 g pkgs.",
+ "unitPrice" : 19.5,
+ "unitsInStock" : 36,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 20,
+ "discontinued" : false,
+ "name" : "Ravioli Angelo"
+ },
+ {
+ "productID" : 44,
+ "supplierID" : 20,
+ "categoryID" : 2,
+ "quantityPerUnit" : "20 - 2 kg bags",
+ "unitPrice" : 19.45,
+ "unitsInStock" : 27,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 15,
+ "discontinued" : false,
+ "name" : "Gula Malacca"
+ },
+ {
+ "productID" : 39,
+ "supplierID" : 18,
+ "categoryID" : 1,
+ "quantityPerUnit" : "750 cc per bottle",
+ "unitPrice" : 18,
+ "unitsInStock" : 69,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 5,
+ "discontinued" : false,
+ "name" : "Chartreuse verte"
+ },
+ {
+ "productID" : 59,
+ "supplierID" : 28,
+ "categoryID" : 4,
+ "quantityPerUnit" : "5 kg pkg.",
+ "unitPrice" : 55,
+ "unitsInStock" : 79,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Raclette Courdavault"
+ },
+ {
+ "productID" : 60,
+ "supplierID" : 28,
+ "categoryID" : 4,
+ "quantityPerUnit" : "15 - 300 g rounds",
+ "unitPrice" : 34,
+ "unitsInStock" : 19,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Camembert Pierrot"
+ },
+ {
+ "productID" : 45,
+ "supplierID" : 21,
+ "categoryID" : 8,
+ "quantityPerUnit" : "1k pkg.",
+ "unitPrice" : 9.5,
+ "unitsInStock" : 5,
+ "unitsOnOrder" : 70,
+ "reorderLevel" : 15,
+ "discontinued" : false,
+ "name" : "Rogede sild"
+ },
+ {
+ "productID" : 58,
+ "supplierID" : 27,
+ "categoryID" : 8,
+ "quantityPerUnit" : "24 pieces",
+ "unitPrice" : 13.25,
+ "unitsInStock" : 62,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 20,
+ "discontinued" : false,
+ "name" : "Escargots de Bourgogne"
+ },
+ {
+ "productID" : 61,
+ "supplierID" : 29,
+ "categoryID" : 2,
+ "quantityPerUnit" : "24 - 500 ml bottles",
+ "unitPrice" : 28.5,
+ "unitsInStock" : 113,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 25,
+ "discontinued" : false,
+ "name" : "Sirop d'érable"
+ },
+ {
+ "productID" : 62,
+ "supplierID" : 29,
+ "categoryID" : 3,
+ "quantityPerUnit" : "48 pies",
+ "unitPrice" : 49.3,
+ "unitsInStock" : 17,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Tarte au sucre"
+ },
+ {
+ "productID" : 63,
+ "supplierID" : 7,
+ "categoryID" : 2,
+ "quantityPerUnit" : "15 - 625 g jars",
+ "unitPrice" : 43.9,
+ "unitsInStock" : 24,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 5,
+ "discontinued" : false,
+ "name" : "Vegie-spread"
+ },
+ {
+ "productID" : 64,
+ "supplierID" : 12,
+ "categoryID" : 5,
+ "quantityPerUnit" : "20 bags x 4 pieces",
+ "unitPrice" : 33.25,
+ "unitsInStock" : 22,
+ "unitsOnOrder" : 80,
+ "reorderLevel" : 30,
+ "discontinued" : false,
+ "name" : "Wimmers gute Semmelknödel"
+ },
+ {
+ "productID" : 65,
+ "supplierID" : 2,
+ "categoryID" : 2,
+ "quantityPerUnit" : "32 - 8 oz bottles",
+ "unitPrice" : 21.05,
+ "unitsInStock" : 76,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Louisiana Fiery Hot Pepper Sauce"
+ },
+ {
+ "productID" : 66,
+ "supplierID" : 2,
+ "categoryID" : 2,
+ "quantityPerUnit" : "24 - 8 oz jars",
+ "unitPrice" : 17,
+ "unitsInStock" : 4,
+ "unitsOnOrder" : 100,
+ "reorderLevel" : 20,
+ "discontinued" : false,
+ "name" : "Louisiana Hot Spiced Okra"
+ },
+ {
+ "productID" : 67,
+ "supplierID" : 16,
+ "categoryID" : 1,
+ "quantityPerUnit" : "24 - 12 oz bottles",
+ "unitPrice" : 14,
+ "unitsInStock" : 52,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 10,
+ "discontinued" : false,
+ "name" : "Laughing Lumberjack Lager"
+ },
+ {
+ "productID" : 68,
+ "supplierID" : 8,
+ "categoryID" : 3,
+ "quantityPerUnit" : "10 boxes x 8 pieces",
+ "unitPrice" : 12.5,
+ "unitsInStock" : 6,
+ "unitsOnOrder" : 10,
+ "reorderLevel" : 15,
+ "discontinued" : false,
+ "name" : "Scottish Longbreads"
+ },
+ {
+ "productID" : 70,
+ "supplierID" : 7,
+ "categoryID" : 1,
+ "quantityPerUnit" : "24 - 355 ml bottles",
+ "unitPrice" : 15,
+ "unitsInStock" : 15,
+ "unitsOnOrder" : 10,
+ "reorderLevel" : 30,
+ "discontinued" : false,
+ "name" : "Outback Lager"
+ },
+ {
+ "productID" : 71,
+ "supplierID" : 15,
+ "categoryID" : 4,
+ "quantityPerUnit" : "10 - 500 g pkgs.",
+ "unitPrice" : 21.5,
+ "unitsInStock" : 26,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Flotemysost"
+ },
+ {
+ "productID" : 73,
+ "supplierID" : 17,
+ "categoryID" : 8,
+ "quantityPerUnit" : "24 - 150 g jars",
+ "unitPrice" : 15,
+ "unitsInStock" : 101,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 5,
+ "discontinued" : false,
+ "name" : "Röd Kaviar"
+ },
+ {
+ "productID" : 74,
+ "supplierID" : 4,
+ "categoryID" : 7,
+ "quantityPerUnit" : "5 kg pkg.",
+ "unitPrice" : 10,
+ "unitsInStock" : 4,
+ "unitsOnOrder" : 20,
+ "reorderLevel" : 5,
+ "discontinued" : false,
+ "name" : "Longlife Tofu"
+ },
+ {
+ "productID" : 75,
+ "supplierID" : 12,
+ "categoryID" : 1,
+ "quantityPerUnit" : "24 - 0.5 l bottles",
+ "unitPrice" : 7.75,
+ "unitsInStock" : 125,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 25,
+ "discontinued" : false,
+ "name" : "Rhönbräu Klosterbier"
+ },
+ {
+ "productID" : 76,
+ "supplierID" : 23,
+ "categoryID" : 1,
+ "quantityPerUnit" : "500 ml",
+ "unitPrice" : 18,
+ "unitsInStock" : 57,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 20,
+ "discontinued" : false,
+ "name" : "Lakkalikööri"
+ },
+ {
+ "productID" : 69,
+ "supplierID" : 15,
+ "categoryID" : 4,
+ "quantityPerUnit" : "10 kg pkg.",
+ "unitPrice" : 36,
+ "unitsInStock" : 26,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 15,
+ "discontinued" : false,
+ "name" : "Gudbrandsdalsost"
+ },
+ {
+ "productID" : 72,
+ "supplierID" : 14,
+ "categoryID" : 4,
+ "quantityPerUnit" : "24 - 200 g pkgs.",
+ "unitPrice" : 34.8,
+ "unitsInStock" : 14,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 0,
+ "discontinued" : false,
+ "name" : "Mozzarella di Giovanni"
+ },
+ {
+ "productID" : 77,
+ "supplierID" : 12,
+ "categoryID" : 2,
+ "quantityPerUnit" : "12 boxes",
+ "unitPrice" : 13,
+ "unitsInStock" : 32,
+ "unitsOnOrder" : 0,
+ "reorderLevel" : 15,
+ "discontinued" : false,
+ "name" : "Original Frankfurter grüne Soße"
+ }
+]
diff --git a/vue-options-api-demos/grid/common/northwind/regions.json b/vue-options-api-demos/grid/common/northwind/regions.json
new file mode 100644
index 00000000..debca3d1
--- /dev/null
+++ b/vue-options-api-demos/grid/common/northwind/regions.json
@@ -0,0 +1,239 @@
+
+[
+ {
+ "regionID" : 1,
+ "name" : "Eastern",
+ "territories" : [
+ {
+ "territoryID" : 1833,
+ "name" : "Georgetow"
+ },
+ {
+ "territoryID" : 1581,
+ "name" : "Westboro"
+ },
+ {
+ "territoryID" : 2116,
+ "name" : "Boston"
+ },
+ {
+ "territoryID" : 2139,
+ "name" : "Cambridge"
+ },
+ {
+ "territoryID" : 1730,
+ "name" : "Bedford"
+ },
+ {
+ "territoryID" : 2903,
+ "name" : "Providence"
+ },
+ {
+ "territoryID" : 6897,
+ "name" : "Wilton"
+ },
+ {
+ "territoryID" : 7960,
+ "name" : "Morristown"
+ },
+ {
+ "territoryID" : 8837,
+ "name" : "Edison"
+ },
+ {
+ "territoryID" : 10019,
+ "name" : "NewYork"
+ },
+ {
+ "territoryID" : 10038,
+ "name" : "NewYork"
+ },
+ {
+ "territoryID" : 11747,
+ "name" : "Mellvile"
+ },
+ {
+ "territoryID" : 14450,
+ "name" : "Fairport"
+ },
+ {
+ "territoryID" : 19713,
+ "name" : "Neward"
+ },
+ {
+ "territoryID" : 2184,
+ "name" : "Braintree"
+ },
+ {
+ "territoryID" : 20852,
+ "name" : "Rockville"
+ },
+ {
+ "territoryID" : 27403,
+ "name" : "Greensboro"
+ },
+ {
+ "territoryID" : 27511,
+ "name" : "Cary"
+ },
+ {
+ "territoryID" : 40222,
+ "name" : "Louisville"
+ }
+ ]
+ },
+ {
+ "regionID" : 2,
+ "name" : "Western",
+ "territories" : [
+ {
+ "territoryID" : 60601,
+ "name" : "Chicago"
+ },
+ {
+ "territoryID" : 80202,
+ "name" : "Denver"
+ },
+ {
+ "territoryID" : 60179,
+ "name" : "HoffmanEstates"
+ },
+ {
+ "territoryID" : 85014,
+ "name" : "Phoenix"
+ },
+ {
+ "territoryID" : 80909,
+ "name" : "ColoradoSprings"
+ },
+ {
+ "territoryID" : 85251,
+ "name" : "Scottsdale"
+ },
+ {
+ "territoryID" : 90405,
+ "name" : "SantaMonica"
+ },
+ {
+ "territoryID" : 94025,
+ "name" : "MenloPark"
+ },
+ {
+ "territoryID" : 94105,
+ "name" : "SanFrancisco"
+ },
+ {
+ "territoryID" : 98004,
+ "name" : "Bellevue"
+ },
+ {
+ "territoryID" : 98052,
+ "name" : "Redmond"
+ },
+ {
+ "territoryID" : 98104,
+ "name" : "Seattle"
+ },
+ {
+ "territoryID" : 95008,
+ "name" : "Campbell"
+ },
+ {
+ "territoryID" : 95054,
+ "name" : "SantaClara"
+ },
+ {
+ "territoryID" : 95060,
+ "name" : "SantaCruz"
+ }
+ ]
+ },
+ {
+ "regionID" : 4,
+ "name" : "Southern",
+ "territories" : [
+ {
+ "territoryID" : 29202,
+ "name" : "Columbia"
+ },
+ {
+ "territoryID" : 30346,
+ "name" : "Atlanta"
+ },
+ {
+ "territoryID" : 32859,
+ "name" : "Orlando"
+ },
+ {
+ "territoryID" : 31406,
+ "name" : "Savannah"
+ },
+ {
+ "territoryID" : 72716,
+ "name" : "Bentonville"
+ },
+ {
+ "territoryID" : 75234,
+ "name" : "Dallas"
+ },
+ {
+ "territoryID" : 78759,
+ "name" : "Austin"
+ },
+ {
+ "territoryID" : 33607,
+ "name" : "Tampa"
+ }
+ ]
+ },
+ {
+ "regionID" : 3,
+ "name" : "Northern",
+ "territories" : [
+ {
+ "territoryID" : 19428,
+ "name" : "Philadelphia"
+ },
+ {
+ "territoryID" : 3801,
+ "name" : "Portsmouth"
+ },
+ {
+ "territoryID" : 3049,
+ "name" : "Hollis"
+ },
+ {
+ "territoryID" : 44122,
+ "name" : "Beachwood"
+ },
+ {
+ "territoryID" : 45839,
+ "name" : "Findlay"
+ },
+ {
+ "territoryID" : 48075,
+ "name" : "Southfield"
+ },
+ {
+ "territoryID" : 48084,
+ "name" : "Troy"
+ },
+ {
+ "territoryID" : 48304,
+ "name" : "BloomfieldHills"
+ },
+ {
+ "territoryID" : 53404,
+ "name" : "Racine"
+ },
+ {
+ "territoryID" : 55113,
+ "name" : "Roseville"
+ },
+ {
+ "territoryID" : 55439,
+ "name" : "Minneapolis"
+ }
+ ]
+ }
+]
diff --git a/vue-options-api-demos/grid/common/northwind/shippers.json b/vue-options-api-demos/grid/common/northwind/shippers.json
new file mode 100644
index 00000000..3b4546bd
--- /dev/null
+++ b/vue-options-api-demos/grid/common/northwind/shippers.json
@@ -0,0 +1,18 @@
+
+[
+ {
+ "shipperID" : 1,
+ "companyName" : "Speedy Express",
+ "phone" : "(503) 555-9831"
+ },
+ {
+ "shipperID" : 2,
+ "companyName" : "United Package",
+ "phone" : "(503) 555-3199"
+ },
+ {
+ "shipperID" : 3,
+ "companyName" : "Federal Shipping",
+ "phone" : "(503) 555-9931"
+ }
+]
diff --git a/vue-options-api-demos/grid/common/northwind/suppliers.json b/vue-options-api-demos/grid/common/northwind/suppliers.json
new file mode 100644
index 00000000..403a0673
--- /dev/null
+++ b/vue-options-api-demos/grid/common/northwind/suppliers.json
@@ -0,0 +1,409 @@
+
+[
+ {
+ "supplierID" : 4,
+ "companyName" : "Tokyo Traders",
+ "contactName" : "Yoshi Nagase",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "9-8 Sekimai Musashino-shi",
+ "city" : "Tokyo",
+ "region" : "NULL",
+ "postalCode" : 100,
+ "country" : "Japan",
+ "phone" : "(03) 3555-5011"
+ }
+ },
+ {
+ "supplierID" : 5,
+ "companyName" : "Cooperativa de Quesos 'Las Cabras'",
+ "contactName" : "Antonio del Valle Saavedra",
+ "contactTitle" : "Export Administrator",
+ "address" : {
+ "street" : "Calle del Rosal 4",
+ "city" : "Oviedo",
+ "region" : "Asturias",
+ "postalCode" : 33007,
+ "country" : "Spain",
+ "phone" : "(98) 598 76 54"
+ }
+ },
+ {
+ "supplierID" : 6,
+ "companyName" : "Mayumi's",
+ "contactName" : "Mayumi Ohno",
+ "contactTitle" : "Marketing Representative",
+ "address" : {
+ "street" : "92 Setsuko Chuo-ku",
+ "city" : "Osaka",
+ "region" : "NULL",
+ "postalCode" : 545,
+ "country" : "Japan",
+ "phone" : "(06) 431-7877"
+ }
+ },
+ {
+ "supplierID" : 7,
+ "companyName" : "Pavlova Ltd.",
+ "contactName" : "Ian Devling",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "74 Rose St. Moonie Ponds",
+ "city" : "Melbourne",
+ "region" : "Victoria",
+ "postalCode" : 3058,
+ "country" : "Australia",
+ "phone" : "(03) 444-2343"
+ }
+ },
+ {
+ "supplierID" : 8,
+ "companyName" : "Specialty Biscuits Ltd.",
+ "contactName" : "Peter Wilson",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "29 King's Way",
+ "city" : "Manchester",
+ "region" : "NULL",
+ "postalCode" : "M14 GSD",
+ "country" : "UK",
+ "phone" : "(161) 555-4448"
+ }
+ },
+ {
+ "supplierID" : 9,
+ "companyName" : "PB Knäckebröd AB",
+ "contactName" : "Lars Peterson",
+ "contactTitle" : "Sales Agent",
+ "address" : {
+ "street" : "Kaloadagatan 13",
+ "city" : "Göteborg",
+ "region" : "NULL",
+ "postalCode" : "S-345 67",
+ "country" : "Sweden",
+ "phone" : "031-987 65 43"
+ }
+ },
+ {
+ "supplierID" : 10,
+ "companyName" : "Refrescos Americanas LTDA",
+ "contactName" : "Carlos Diaz",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Av. das Americanas 12.890",
+ "city" : "Sao Paulo",
+ "region" : "NULL",
+ "postalCode" : 5442,
+ "country" : "Brazil",
+ "phone" : "(11) 555 4640"
+ }
+ },
+ {
+ "supplierID" : 11,
+ "companyName" : "Heli Süßwaren GmbH & Co. KG",
+ "contactName" : "Petra Winkler",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Tiergartenstraße 5",
+ "city" : "Berlin",
+ "region" : "NULL",
+ "postalCode" : 10785,
+ "country" : "Germany",
+ "phone" : "(010) 9984510"
+ }
+ },
+ {
+ "supplierID" : 2,
+ "companyName" : "New Orleans Cajun Delights",
+ "contactName" : "Shelley Burke",
+ "contactTitle" : "Order Administrator",
+ "address" : {
+ "street" : "P.O. Box 78934",
+ "city" : "New Orleans",
+ "region" : "LA",
+ "postalCode" : 70117,
+ "country" : "USA",
+ "phone" : "(100) 555-4822"
+ }
+ },
+ {
+ "supplierID" : 12,
+ "companyName" : "Plutzer Lebensmittelgroßmärkte AG",
+ "contactName" : "Martin Bein",
+ "contactTitle" : "International Marketing Mgr.",
+ "address" : {
+ "street" : "Bogenallee 51",
+ "city" : "Frankfurt",
+ "region" : "NULL",
+ "postalCode" : 60439,
+ "country" : "Germany",
+ "phone" : "(069) 992755"
+ }
+ },
+ {
+ "supplierID" : 13,
+ "companyName" : "Nord-Ost-Fisch Handelsgesellschaft mbH",
+ "contactName" : "Sven Petersen",
+ "contactTitle" : "Coordinator Foreign Markets",
+ "address" : {
+ "street" : "Frahmredder 112a",
+ "city" : "Cuxhaven",
+ "region" : "NULL",
+ "postalCode" : 27478,
+ "country" : "Germany",
+ "phone" : "(04721) 8713"
+ }
+ },
+ {
+ "supplierID" : 14,
+ "companyName" : "Formaggi Fortini s.r.l.",
+ "contactName" : "Elio Rossi",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Viale Dante 75",
+ "city" : "Ravenna",
+ "region" : "NULL",
+ "postalCode" : 48100,
+ "country" : "Italy",
+ "phone" : "(0544) 60323"
+ }
+ },
+ {
+ "supplierID" : 15,
+ "companyName" : "Norske Meierier",
+ "contactName" : "Beate Vileid",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Hatlevegen 5",
+ "city" : "Sandvika",
+ "region" : "NULL",
+ "postalCode" : 1320,
+ "country" : "Norway",
+ "phone" : "(0)2-953010"
+ }
+ },
+ {
+ "supplierID" : 1,
+ "companyName" : "Exotic Liquids",
+ "contactName" : "Charlotte Cooper",
+ "contactTitle" : "Purchasing Manager",
+ "address" : {
+ "street" : "49 Gilbert St.",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "EC1 4SD",
+ "country" : "UK",
+ "phone" : "(171) 555-2222"
+ }
+ },
+ {
+ "supplierID" : 3,
+ "companyName" : "Grandma Kelly's Homestead",
+ "contactName" : "Regina Murphy",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "707 Oxford Rd.",
+ "city" : "Ann Arbor",
+ "region" : "MI",
+ "postalCode" : 48104,
+ "country" : "USA",
+ "phone" : "(313) 555-5735"
+ }
+ },
+ {
+ "supplierID" : 16,
+ "companyName" : "Bigfoot Breweries",
+ "contactName" : "Cheryl Saylor",
+ "contactTitle" : "Regional Account Rep.",
+ "address" : {
+ "street" : "3400 - 8th Avenue Suite 210",
+ "city" : "Bend",
+ "region" : "OR",
+ "postalCode" : 97101,
+ "country" : "USA",
+ "phone" : "(503) 555-9931"
+ }
+ },
+ {
+ "supplierID" : 17,
+ "companyName" : "Svensk Sjöföda AB",
+ "contactName" : "Michael Björn",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Brovallavägen 231",
+ "city" : "Stockholm",
+ "region" : "NULL",
+ "postalCode" : "S-123 45",
+ "country" : "Sweden",
+ "phone" : "08-123 45 67"
+ }
+ },
+ {
+ "supplierID" : 18,
+ "companyName" : "Aux joyeux ecclésiastiques",
+ "contactName" : "Guylène Nodier",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "203 Rue des Francs-Bourgeois",
+ "city" : "Paris",
+ "region" : "NULL",
+ "postalCode" : 75004,
+ "country" : "France",
+ "phone" : "(1) 03.83.00.68"
+ }
+ },
+ {
+ "supplierID" : 19,
+ "companyName" : "New England Seafood Cannery",
+ "contactName" : "Robb Merchant",
+ "contactTitle" : "Wholesale Account Agent",
+ "address" : {
+ "street" : "Order Processing Dept. 2100 Paul Revere Blvd.",
+ "city" : "Boston",
+ "region" : "MA",
+ "postalCode" : 2134,
+ "country" : "USA",
+ "phone" : "(617) 555-3267"
+ }
+ },
+ {
+ "supplierID" : 20,
+ "companyName" : "Leka Trading",
+ "contactName" : "Chandra Leka",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "471 Serangoon Loop Suite #402",
+ "city" : "Singapore",
+ "region" : "NULL",
+ "postalCode" : 512,
+ "country" : "Singapore",
+ "phone" : "555-8787"
+ }
+ },
+ {
+ "supplierID" : 21,
+ "companyName" : "Lyngbysild",
+ "contactName" : "Niels Petersen",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Lyngbysild Fiskebakken 10",
+ "city" : "Lyngby",
+ "region" : "NULL",
+ "postalCode" : 2800,
+ "country" : "Denmark",
+ "phone" : 43844108
+ }
+ },
+ {
+ "supplierID" : 22,
+ "companyName" : "Zaanse Snoepfabriek",
+ "contactName" : "Dirk Luchte",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Verkoop Rijnweg 22",
+ "city" : "Zaandam",
+ "region" : "NULL",
+ "postalCode" : "9999 ZZ",
+ "country" : "Netherlands",
+ "phone" : "(12345) 1212"
+ }
+ },
+ {
+ "supplierID" : 25,
+ "companyName" : "Ma Maison",
+ "contactName" : "Jean-Guy Lauzon",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "2960 Rue St. Laurent",
+ "city" : "Montréal",
+ "region" : "Québec",
+ "postalCode" : "H1J 1C3",
+ "country" : "Canada",
+ "phone" : "(514) 555-9022"
+ }
+ },
+ {
+ "supplierID" : 27,
+ "companyName" : "Escargots Nouveaux",
+ "contactName" : "Marie Delamare",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "22 rue H. Voiron",
+ "city" : "Montceau",
+ "region" : "NULL",
+ "postalCode" : 71300,
+ "country" : "France",
+ "phone" : "85.57.00.07"
+ }
+ },
+ {
+ "supplierID" : 26,
+ "companyName" : "Pasta Buttini s.r.l.",
+ "contactName" : "Giovanni Giudici",
+ "contactTitle" : "Order Administrator",
+ "address" : {
+ "street" : "Via dei Gelsomini 153",
+ "city" : "Salerno",
+ "region" : "NULL",
+ "postalCode" : 84100,
+ "country" : "Italy",
+ "phone" : "(089) 6547665"
+ }
+ },
+ {
+ "supplierID" : 28,
+ "companyName" : "Gai pâturage",
+ "contactName" : "Eliane Noz",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Bat. B 3 rue des Alpes",
+ "city" : "Annecy",
+ "region" : "NULL",
+ "postalCode" : 74000,
+ "country" : "France",
+ "phone" : "38.76.98.06"
+ }
+ },
+ {
+ "supplierID" : 23,
+ "companyName" : "Karkki Oy",
+ "contactName" : "Anne Heikkonen",
+ "contactTitle" : "Product Manager",
+ "address" : {
+ "street" : "Valtakatu 12",
+ "city" : "Lappeenranta",
+ "region" : "NULL",
+ "postalCode" : 53120,
+ "country" : "Finland",
+ "phone" : "(953) 10956"
+ }
+ },
+ {
+ "supplierID" : 24,
+ "companyName" : "G'day Mate",
+ "contactName" : "Wendy Mackenzie",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "170 Prince Edward Parade Hunter's Hill",
+ "city" : "Sydney",
+ "region" : "NSW",
+ "postalCode" : 2042,
+ "country" : "Australia",
+ "phone" : "(02) 555-5914"
+ }
+ },
+ {
+ "supplierID" : 29,
+ "companyName" : "Forêts d'érables",
+ "contactName" : "Chantal Goulet",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "148 rue Chasseur",
+ "city" : "Ste-Hyacinthe",
+ "region" : "Québec",
+ "postalCode" : "J2S 7S8",
+ "country" : "Canada",
+ "phone" : "(514) 555-2955"
+ }
+ }
+]
diff --git a/vue-options-api-demos/grid/compact-grid/ChangeComponent.vue b/vue-options-api-demos/grid/compact-grid/ChangeComponent.vue
new file mode 100644
index 00000000..2d70a20d
--- /dev/null
+++ b/vue-options-api-demos/grid/compact-grid/ChangeComponent.vue
@@ -0,0 +1,22 @@
+
+
+ {{ changeFieldValue }}
+
+
+
diff --git a/vue-options-api-demos/grid/compact-grid/ChangePercentageComponent.vue b/vue-options-api-demos/grid/compact-grid/ChangePercentageComponent.vue
new file mode 100644
index 00000000..e6f64790
--- /dev/null
+++ b/vue-options-api-demos/grid/compact-grid/ChangePercentageComponent.vue
@@ -0,0 +1,30 @@
+
+
+ {{ formatNumber(changeFieldValue, 'p2') }}
+
+
+
diff --git a/vue-options-api-demos/grid/compact-grid/GridComponent.vue b/vue-options-api-demos/grid/compact-grid/GridComponent.vue
new file mode 100644
index 00000000..a52d43ca
--- /dev/null
+++ b/vue-options-api-demos/grid/compact-grid/GridComponent.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+ {{ size === "small" ? "Compact Size Grid." : "Default Size Grid" }}
+
+
+
+ Export to Excel
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/compact-grid/companyData.json b/vue-options-api-demos/grid/compact-grid/companyData.json
new file mode 100644
index 00000000..fc8558eb
--- /dev/null
+++ b/vue-options-api-demos/grid/compact-grid/companyData.json
@@ -0,0 +1,1002 @@
+[
+ {
+ "id": 1,
+ "symbol": "BA",
+ "date": "2009-01-03T00:00:00",
+ "open": 41.62,
+ "high": 41.69,
+ "low": 39.81,
+ "close": 40.12,
+ "volume": 2632000
+ },
+ {
+ "id": 2,
+ "symbol": "BA",
+ "date": "2009-01-04T00:00:00",
+ "open": 39.88,
+ "high": 41.12,
+ "low": 39.75,
+ "close": 40.12,
+ "volume": 3584700
+ },
+ {
+ "id": 3,
+ "symbol": "BA",
+ "date": "2009-01-05T00:00:00",
+ "open": 42.0,
+ "high": 43.31,
+ "low": 41.38,
+ "close": 42.62,
+ "volume": 7631700
+ },
+ {
+ "id": 4,
+ "symbol": "BA",
+ "date": "2009-01-06T00:00:00",
+ "open": 42.25,
+ "high": 43.44,
+ "low": 41.12,
+ "close": 43.06,
+ "volume": 4922200
+ },
+ {
+ "id": 5,
+ "symbol": "BA",
+ "date": "2009-01-07T00:00:00",
+ "open": 43.88,
+ "high": 44.88,
+ "low": 43.69,
+ "close": 44.12,
+ "volume": 6008300
+ },
+ {
+ "id": 6,
+ "symbol": "BA",
+ "date": "2009-01-10T00:00:00",
+ "open": 44.31,
+ "high": 44.5,
+ "low": 43.5,
+ "close": 43.69,
+ "volume": 2400000
+ },
+ {
+ "id": 7,
+ "symbol": "BA",
+ "date": "2009-01-11T00:00:00",
+ "open": 43.38,
+ "high": 43.94,
+ "low": 42.75,
+ "close": 42.88,
+ "volume": 2450200
+ },
+ {
+ "id": 8,
+ "symbol": "BA",
+ "date": "2009-01-12T00:00:00",
+ "open": 42.75,
+ "high": 44.19,
+ "low": 42.5,
+ "close": 43.06,
+ "volume": 2326900
+ },
+ {
+ "id": 9,
+ "symbol": "BA",
+ "date": "2009-01-13T00:00:00",
+ "open": 43.31,
+ "high": 43.38,
+ "low": 42.0,
+ "close": 42.38,
+ "volume": 3030100
+ },
+ {
+ "id": 10,
+ "symbol": "BA",
+ "date": "2009-01-14T00:00:00",
+ "open": 43.62,
+ "high": 44.25,
+ "low": 42.94,
+ "close": 44.0,
+ "volume": 3834900
+ },
+ {
+ "id": 11,
+ "symbol": "BA",
+ "date": "2009-01-18T00:00:00",
+ "open": 43.88,
+ "high": 45.0,
+ "low": 43.12,
+ "close": 45.0,
+ "volume": 5859100
+ },
+ {
+ "id": 12,
+ "symbol": "BA",
+ "date": "2009-01-19T00:00:00",
+ "open": 45.38,
+ "high": 48.12,
+ "low": 45.25,
+ "close": 47.62,
+ "volume": 11457600
+ },
+ {
+ "id": 13,
+ "symbol": "BA",
+ "date": "2009-01-20T00:00:00",
+ "open": 47.56,
+ "high": 47.88,
+ "low": 45.75,
+ "close": 46.5,
+ "volume": 8931100
+ },
+ {
+ "id": 14,
+ "symbol": "BA",
+ "date": "2009-01-21T00:00:00",
+ "open": 46.94,
+ "high": 46.94,
+ "low": 45.0,
+ "close": 45.69,
+ "volume": 4390000
+ },
+ {
+ "id": 15,
+ "symbol": "BA",
+ "date": "2009-01-24T00:00:00",
+ "open": 45.81,
+ "high": 46.19,
+ "low": 43.62,
+ "close": 44.31,
+ "volume": 3296200
+ },
+ {
+ "id": 16,
+ "symbol": "BA",
+ "date": "2009-01-25T00:00:00",
+ "open": 45.0,
+ "high": 46.0,
+ "low": 44.75,
+ "close": 45.69,
+ "volume": 5052200
+ },
+ {
+ "id": 17,
+ "symbol": "BA",
+ "date": "2009-01-26T00:00:00",
+ "open": 45.69,
+ "high": 46.5,
+ "low": 45.0,
+ "close": 46.19,
+ "volume": 3090100
+ },
+ {
+ "id": 18,
+ "symbol": "BA",
+ "date": "2009-01-27T00:00:00",
+ "open": 46.0,
+ "high": 46.88,
+ "low": 44.88,
+ "close": 45.06,
+ "volume": 3329100
+ },
+ {
+ "id": 19,
+ "symbol": "BA",
+ "date": "2009-01-28T00:00:00",
+ "open": 44.81,
+ "high": 45.62,
+ "low": 44.5,
+ "close": 44.62,
+ "volume": 2258400
+ },
+ {
+ "id": 20,
+ "symbol": "BA",
+ "date": "2009-01-31T00:00:00",
+ "open": 44.0,
+ "high": 44.56,
+ "low": 43.94,
+ "close": 44.5,
+ "volume": 2340500
+ },
+ {
+ "id": 21,
+ "symbol": "BA",
+ "date": "2009-02-01T00:00:00",
+ "open": 43.88,
+ "high": 44.19,
+ "low": 43.31,
+ "close": 43.75,
+ "volume": 2670800
+ },
+ {
+ "id": 22,
+ "symbol": "BA",
+ "date": "2009-02-02T00:00:00",
+ "open": 43.38,
+ "high": 45.19,
+ "low": 43.38,
+ "close": 44.62,
+ "volume": 3295500
+ },
+ {
+ "id": 23,
+ "symbol": "BA",
+ "date": "2009-02-03T00:00:00",
+ "open": 45.0,
+ "high": 45.06,
+ "low": 43.12,
+ "close": 43.44,
+ "volume": 2886400
+ },
+ {
+ "id": 24,
+ "symbol": "BA",
+ "date": "2009-02-04T00:00:00",
+ "open": 43.75,
+ "high": 44.19,
+ "low": 42.56,
+ "close": 44.0,
+ "volume": 2927200
+ },
+ {
+ "id": 25,
+ "symbol": "BA",
+ "date": "2009-02-07T00:00:00",
+ "open": 43.88,
+ "high": 43.88,
+ "low": 41.69,
+ "close": 41.81,
+ "volume": 3024400
+ },
+ {
+ "id": 26,
+ "symbol": "BA",
+ "date": "2009-02-08T00:00:00",
+ "open": 41.94,
+ "high": 42.06,
+ "low": 40.0,
+ "close": 41.0,
+ "volume": 5097700
+ },
+ {
+ "id": 27,
+ "symbol": "BA",
+ "date": "2009-02-09T00:00:00",
+ "open": 40.25,
+ "high": 40.25,
+ "low": 38.38,
+ "close": 39.0,
+ "volume": 5535800
+ },
+ {
+ "id": 28,
+ "symbol": "BA",
+ "date": "2009-02-10T00:00:00",
+ "open": 38.81,
+ "high": 40.19,
+ "low": 38.75,
+ "close": 39.75,
+ "volume": 4040600
+ },
+ {
+ "id": 29,
+ "symbol": "BA",
+ "date": "2009-02-11T00:00:00",
+ "open": 39.75,
+ "high": 40.38,
+ "low": 39.12,
+ "close": 39.88,
+ "volume": 3127800
+ },
+ {
+ "id": 30,
+ "symbol": "BA",
+ "date": "2009-02-14T00:00:00",
+ "open": 39.62,
+ "high": 39.69,
+ "low": 38.06,
+ "close": 38.25,
+ "volume": 2605900
+ },
+ {
+ "id": 31,
+ "symbol": "BA",
+ "date": "2009-02-15T00:00:00",
+ "open": 38.12,
+ "high": 38.69,
+ "low": 37.38,
+ "close": 38.5,
+ "volume": 3947800
+ },
+ {
+ "id": 32,
+ "symbol": "BA",
+ "date": "2009-02-16T00:00:00",
+ "open": 37.75,
+ "high": 37.94,
+ "low": 36.88,
+ "close": 37.25,
+ "volume": 3423000
+ },
+ {
+ "id": 33,
+ "symbol": "BA",
+ "date": "2009-02-17T00:00:00",
+ "open": 37.25,
+ "high": 37.88,
+ "low": 36.56,
+ "close": 37.5,
+ "volume": 3400500
+ },
+ {
+ "id": 34,
+ "symbol": "BA",
+ "date": "2009-02-18T00:00:00",
+ "open": 37.38,
+ "high": 37.5,
+ "low": 35.88,
+ "close": 36.0,
+ "volume": 5536500
+ },
+ {
+ "id": 35,
+ "symbol": "BA",
+ "date": "2009-02-22T00:00:00",
+ "open": 35.94,
+ "high": 39.94,
+ "low": 35.88,
+ "close": 38.88,
+ "volume": 4768400
+ },
+ {
+ "id": 36,
+ "symbol": "BA",
+ "date": "2009-02-23T00:00:00",
+ "open": 38.62,
+ "high": 38.69,
+ "low": 37.06,
+ "close": 37.12,
+ "volume": 3880800
+ },
+ {
+ "id": 37,
+ "symbol": "BA",
+ "date": "2009-02-24T00:00:00",
+ "open": 36.88,
+ "high": 37.0,
+ "low": 35.88,
+ "close": 36.56,
+ "volume": 4198300
+ },
+ {
+ "id": 38,
+ "symbol": "BA",
+ "date": "2009-02-25T00:00:00",
+ "open": 37.06,
+ "high": 38.0,
+ "low": 36.81,
+ "close": 37.81,
+ "volume": 3170600
+ },
+ {
+ "id": 39,
+ "symbol": "BA",
+ "date": "2009-02-28T00:00:00",
+ "open": 37.5,
+ "high": 37.62,
+ "low": 36.56,
+ "close": 37.0,
+ "volume": 3573300
+ },
+ {
+ "id": 40,
+ "symbol": "BA",
+ "date": "2009-02-28T00:00:00",
+ "open": 37.19,
+ "high": 37.62,
+ "low": 36.12,
+ "close": 36.94,
+ "volume": 3503100
+ },
+ {
+ "id": 41,
+ "symbol": "BA",
+ "date": "2009-03-01T00:00:00",
+ "open": 36.94,
+ "high": 36.62,
+ "low": 35.94,
+ "close": 36.31,
+ "volume": 2838000
+ },
+ {
+ "id": 42,
+ "symbol": "BA",
+ "date": "2009-03-02T00:00:00",
+ "open": 35.94,
+ "high": 37.19,
+ "low": 35.38,
+ "close": 35.94,
+ "volume": 4053200
+ },
+ {
+ "id": 43,
+ "symbol": "BA",
+ "date": "2009-03-03T00:00:00",
+ "open": 35.94,
+ "high": 36.5,
+ "low": 35.69,
+ "close": 35.94,
+ "volume": 3884100
+ },
+ {
+ "id": 44,
+ "symbol": "BA",
+ "date": "2009-03-06T00:00:00",
+ "open": 35.94,
+ "high": 36.19,
+ "low": 35.0,
+ "close": 35.12,
+ "volume": 2879500
+ },
+ {
+ "id": 45,
+ "symbol": "BA",
+ "date": "2009-03-07T00:00:00",
+ "open": 35.12,
+ "high": 35.12,
+ "low": 34.12,
+ "close": 34.75,
+ "volume": 3565000
+ },
+ {
+ "id": 46,
+ "symbol": "BA",
+ "date": "2009-03-08T00:00:00",
+ "open": 34.0,
+ "high": 34.19,
+ "low": 33.38,
+ "close": 33.38,
+ "volume": 4134600
+ },
+ {
+ "id": 47,
+ "symbol": "BA",
+ "date": "2009-03-09T00:00:00",
+ "open": 33.5,
+ "high": 34.5,
+ "low": 33.25,
+ "close": 33.75,
+ "volume": 3236700
+ },
+ {
+ "id": 48,
+ "symbol": "BA",
+ "date": "2009-03-10T00:00:00",
+ "open": 33.94,
+ "high": 33.94,
+ "low": 32.31,
+ "close": 33.25,
+ "volume": 5080300
+ },
+ {
+ "id": 49,
+ "symbol": "BA",
+ "date": "2009-03-13T00:00:00",
+ "open": 32.25,
+ "high": 33.12,
+ "low": 32.0,
+ "close": 32.62,
+ "volume": 3420200
+ },
+ {
+ "id": 50,
+ "symbol": "BA",
+ "date": "2009-03-14T00:00:00",
+ "open": 32.75,
+ "high": 33.81,
+ "low": 32.44,
+ "close": 33.06,
+ "volume": 3727900
+ },
+ {
+ "id": 51,
+ "symbol": "BA",
+ "date": "2009-03-15T00:00:00",
+ "open": 32.88,
+ "high": 35.5,
+ "low": 32.81,
+ "close": 34.88,
+ "volume": 4859300
+ },
+ {
+ "id": 52,
+ "symbol": "BA",
+ "date": "2009-03-16T00:00:00",
+ "open": 35.0,
+ "high": 35.94,
+ "low": 34.69,
+ "close": 35.62,
+ "volume": 4725200
+ },
+ {
+ "id": 53,
+ "symbol": "BA",
+ "date": "2009-03-17T00:00:00",
+ "open": 37.25,
+ "high": 38.94,
+ "low": 36.0,
+ "close": 37.19,
+ "volume": 15099400
+ },
+ {
+ "id": 54,
+ "symbol": "BA",
+ "date": "2009-03-20T00:00:00",
+ "open": 37.19,
+ "high": 37.69,
+ "low": 36.38,
+ "close": 37.0,
+ "volume": 5786400
+ },
+ {
+ "id": 55,
+ "symbol": "BA",
+ "date": "2009-03-21T00:00:00",
+ "open": 37.19,
+ "high": 37.44,
+ "low": 36.19,
+ "close": 36.56,
+ "volume": 4153400
+ },
+ {
+ "id": 56,
+ "symbol": "BA",
+ "date": "2009-03-22T00:00:00",
+ "open": 36.94,
+ "high": 37.19,
+ "low": 35.75,
+ "close": 36.38,
+ "volume": 3358600
+ },
+ {
+ "id": 57,
+ "symbol": "BA",
+ "date": "2009-03-23T00:00:00",
+ "open": 35.62,
+ "high": 35.94,
+ "low": 34.81,
+ "close": 35.12,
+ "volume": 4080400
+ },
+ {
+ "id": 58,
+ "symbol": "BA",
+ "date": "2009-03-24T00:00:00",
+ "open": 36.0,
+ "high": 36.44,
+ "low": 35.5,
+ "close": 36.12,
+ "volume": 5797400
+ },
+ {
+ "id": 59,
+ "symbol": "BA",
+ "date": "2009-03-27T00:00:00",
+ "open": 36.25,
+ "high": 37.31,
+ "low": 36.12,
+ "close": 37.12,
+ "volume": 2534000
+ },
+ {
+ "id": 60,
+ "symbol": "BA",
+ "date": "2009-03-28T00:00:00",
+ "open": 36.94,
+ "high": 38.19,
+ "low": 36.88,
+ "close": 38.0,
+ "volume": 5056400
+ },
+ {
+ "id": 61,
+ "symbol": "BA",
+ "date": "2009-03-29T00:00:00",
+ "open": 37.75,
+ "high": 38.19,
+ "low": 37.31,
+ "close": 37.88,
+ "volume": 2731000
+ },
+ {
+ "id": 62,
+ "symbol": "BA",
+ "date": "2009-03-30T00:00:00",
+ "open": 37.88,
+ "high": 38.94,
+ "low": 37.62,
+ "close": 38.62,
+ "volume": 3266100
+ },
+ {
+ "id": 63,
+ "symbol": "BA",
+ "date": "2009-03-31T00:00:00",
+ "open": 38.75,
+ "high": 38.81,
+ "low": 37.81,
+ "close": 37.81,
+ "volume": 4630100
+ },
+ {
+ "id": 64,
+ "symbol": "BA",
+ "date": "2009-04-03T00:00:00",
+ "open": 37.75,
+ "high": 37.75,
+ "low": 37.06,
+ "close": 37.19,
+ "volume": 3234700
+ },
+ {
+ "id": 65,
+ "symbol": "BA",
+ "date": "2009-04-04T00:00:00",
+ "open": 37.38,
+ "high": 38.25,
+ "low": 36.56,
+ "close": 37.31,
+ "volume": 4002100
+ },
+ {
+ "id": 66,
+ "symbol": "BA",
+ "date": "2009-04-05T00:00:00",
+ "open": 36.88,
+ "high": 37.25,
+ "low": 36.0,
+ "close": 36.06,
+ "volume": 2860900
+ },
+ {
+ "id": 67,
+ "symbol": "BA",
+ "date": "2009-04-06T00:00:00",
+ "open": 36.0,
+ "high": 36.44,
+ "low": 35.62,
+ "close": 36.12,
+ "volume": 2941900
+ },
+ {
+ "id": 68,
+ "symbol": "BA",
+ "date": "2009-04-07T00:00:00",
+ "open": 36.19,
+ "high": 36.31,
+ "low": 35.38,
+ "close": 35.69,
+ "volume": 2381600
+ },
+ {
+ "id": 69,
+ "symbol": "BA",
+ "date": "2009-04-10T00:00:00",
+ "open": 35.5,
+ "high": 35.62,
+ "low": 35.0,
+ "close": 35.06,
+ "volume": 2452600
+ },
+ {
+ "id": 70,
+ "symbol": "BA",
+ "date": "2009-04-11T00:00:00",
+ "open": 35.0,
+ "high": 36.38,
+ "low": 35.0,
+ "close": 35.69,
+ "volume": 2251100
+ },
+ {
+ "id": 71,
+ "symbol": "BA",
+ "date": "2009-04-12T00:00:00",
+ "open": 35.94,
+ "high": 38.38,
+ "low": 35.88,
+ "close": 37.62,
+ "volume": 4620200
+ },
+ {
+ "id": 72,
+ "symbol": "BA",
+ "date": "2009-04-13T00:00:00",
+ "open": 37.62,
+ "high": 37.62,
+ "low": 36.5,
+ "close": 37.0,
+ "volume": 2916700
+ },
+ {
+ "id": 73,
+ "symbol": "BA",
+ "date": "2009-04-14T00:00:00",
+ "open": 36.0,
+ "high": 36.75,
+ "low": 34.75,
+ "close": 35.38,
+ "volume": 3744900
+ },
+ {
+ "id": 74,
+ "symbol": "BA",
+ "date": "2009-04-17T00:00:00",
+ "open": 35.12,
+ "high": 35.38,
+ "low": 34.06,
+ "close": 35.31,
+ "volume": 3739100
+ },
+ {
+ "id": 75,
+ "symbol": "BA",
+ "date": "2009-04-18T00:00:00",
+ "open": 34.62,
+ "high": 35.06,
+ "low": 34.31,
+ "close": 34.75,
+ "volume": 3378800
+ },
+ {
+ "id": 76,
+ "symbol": "BA",
+ "date": "2009-04-19T00:00:00",
+ "open": 35.94,
+ "high": 37.75,
+ "low": 35.56,
+ "close": 37.25,
+ "volume": 5709000
+ },
+ {
+ "id": 77,
+ "symbol": "BA",
+ "date": "2009-04-20T00:00:00",
+ "open": 37.5,
+ "high": 40.25,
+ "low": 37.5,
+ "close": 40.06,
+ "volume": 8110700
+ },
+ {
+ "id": 78,
+ "symbol": "BA",
+ "date": "2009-04-24T00:00:00",
+ "open": 39.62,
+ "high": 41.25,
+ "low": 37.5,
+ "close": 37.88,
+ "volume": 10087700
+ },
+ {
+ "id": 79,
+ "symbol": "BA",
+ "date": "2009-04-25T00:00:00",
+ "open": 38.25,
+ "high": 39.56,
+ "low": 38.25,
+ "close": 39.0,
+ "volume": 5397100
+ },
+ {
+ "id": 80,
+ "symbol": "BA",
+ "date": "2009-04-26T00:00:00",
+ "open": 39.19,
+ "high": 40.56,
+ "low": 39.0,
+ "close": 39.94,
+ "volume": 5338300
+ },
+ {
+ "id": 81,
+ "symbol": "BA",
+ "date": "2009-04-27T00:00:00",
+ "open": 39.0,
+ "high": 40.25,
+ "low": 38.94,
+ "close": 39.81,
+ "volume": 3176700
+ },
+ {
+ "id": 82,
+ "symbol": "BA",
+ "date": "2009-04-28T00:00:00",
+ "open": 39.62,
+ "high": 40.06,
+ "low": 38.94,
+ "close": 39.69,
+ "volume": 1853600
+ },
+ {
+ "id": 83,
+ "symbol": "BA",
+ "date": "2009-05-01T00:00:00",
+ "open": 39.69,
+ "high": 40.19,
+ "low": 39.0,
+ "close": 39.06,
+ "volume": 2886100
+ },
+ {
+ "id": 84,
+ "symbol": "BA",
+ "date": "2009-05-02T00:00:00",
+ "open": 39.06,
+ "high": 39.06,
+ "low": 37.81,
+ "close": 37.94,
+ "volume": 2549200
+ },
+ {
+ "id": 85,
+ "symbol": "BA",
+ "date": "2009-05-03T00:00:00",
+ "open": 37.31,
+ "high": 38.19,
+ "low": 36.81,
+ "close": 37.31,
+ "volume": 3311300
+ },
+ {
+ "id": 86,
+ "symbol": "BA",
+ "date": "2009-05-04T00:00:00",
+ "open": 38.25,
+ "high": 39.31,
+ "low": 37.81,
+ "close": 38.19,
+ "volume": 2981100
+ },
+ {
+ "id": 87,
+ "symbol": "BA",
+ "date": "2009-05-05T00:00:00",
+ "open": 38.0,
+ "high": 39.88,
+ "low": 37.94,
+ "close": 39.5,
+ "volume": 2792900
+ },
+ {
+ "id": 88,
+ "symbol": "BA",
+ "date": "2009-05-08T00:00:00",
+ "open": 39.0,
+ "high": 39.5,
+ "low": 38.19,
+ "close": 38.25,
+ "volume": 3146400
+ },
+ {
+ "id": 89,
+ "symbol": "BA",
+ "date": "2009-05-09T00:00:00",
+ "open": 38.5,
+ "high": 39.19,
+ "low": 38.12,
+ "close": 38.31,
+ "volume": 2567300
+ },
+ {
+ "id": 90,
+ "symbol": "BA",
+ "date": "2009-05-10T00:00:00",
+ "open": 37.75,
+ "high": 37.94,
+ "low": 36.56,
+ "close": 36.88,
+ "volume": 4820400
+ },
+ {
+ "id": 91,
+ "symbol": "BA",
+ "date": "2009-05-11T00:00:00",
+ "open": 37.12,
+ "high": 38.19,
+ "low": 37.06,
+ "close": 37.31,
+ "volume": 2887200
+ },
+ {
+ "id": 92,
+ "symbol": "BA",
+ "date": "2009-05-12T00:00:00",
+ "open": 37.62,
+ "high": 37.62,
+ "low": 37.06,
+ "close": 37.19,
+ "volume": 2453200
+ },
+ {
+ "id": 93,
+ "symbol": "BA",
+ "date": "2009-05-15T00:00:00",
+ "open": 36.62,
+ "high": 37.5,
+ "low": 36.44,
+ "close": 37.19,
+ "volume": 2913500
+ },
+ {
+ "id": 94,
+ "symbol": "BA",
+ "date": "2009-05-16T00:00:00",
+ "open": 37.19,
+ "high": 37.88,
+ "low": 36.75,
+ "close": 37.38,
+ "volume": 3815700
+ },
+ {
+ "id": 95,
+ "symbol": "BA",
+ "date": "2009-05-17T00:00:00",
+ "open": 37.0,
+ "high": 37.5,
+ "low": 36.56,
+ "close": 37.38,
+ "volume": 2739800
+ },
+ {
+ "id": 96,
+ "symbol": "BA",
+ "date": "2009-05-18T00:00:00",
+ "open": 37.12,
+ "high": 37.75,
+ "low": 37.12,
+ "close": 37.62,
+ "volume": 2050100
+ },
+ {
+ "id": 97,
+ "symbol": "BA",
+ "date": "2009-05-19T00:00:00",
+ "open": 37.0,
+ "high": 37.38,
+ "low": 36.25,
+ "close": 36.94,
+ "volume": 2193900
+ },
+ {
+ "id": 98,
+ "symbol": "BA",
+ "date": "2009-05-22T00:00:00",
+ "open": 37.38,
+ "high": 37.69,
+ "low": 36.25,
+ "close": 36.56,
+ "volume": 2966000
+ },
+ {
+ "id": 99,
+ "symbol": "BA",
+ "date": "2009-05-23T00:00:00",
+ "open": 36.62,
+ "high": 37.94,
+ "low": 36.62,
+ "close": 37.12,
+ "volume": 2850600
+ },
+ {
+ "id": 100,
+ "symbol": "BA",
+ "date": "2009-05-24T00:00:00",
+ "open": 37.25,
+ "high": 39.0,
+ "low": 37.19,
+ "close": 38.88,
+ "volume": 4642600
+ }
+]
diff --git a/vue-options-api-demos/grid/compact-grid/main.js b/vue-options-api-demos/grid/compact-grid/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/compact-grid/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/compact-grid/main.vue b/vue-options-api-demos/grid/compact-grid/main.vue
new file mode 100644
index 00000000..cee977fe
--- /dev/null
+++ b/vue-options-api-demos/grid/compact-grid/main.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/cells/component/ComponentInstance.vue b/vue-options-api-demos/grid/custom-rendering/cells/component/ComponentInstance.vue
new file mode 100644
index 00000000..6fdb6b41
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/cells/component/ComponentInstance.vue
@@ -0,0 +1,37 @@
+
+{{ getNestedValue(field, dataItem)}}
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/cells/component/main.js b/vue-options-api-demos/grid/custom-rendering/cells/component/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/cells/component/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/cells/component/main.vue b/vue-options-api-demos/grid/custom-rendering/cells/component/main.vue
new file mode 100644
index 00000000..b29f8db6
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/cells/component/main.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/cells/function/main.js b/vue-options-api-demos/grid/custom-rendering/cells/function/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/cells/function/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/cells/function/main.vue b/vue-options-api-demos/grid/custom-rendering/cells/function/main.vue
new file mode 100644
index 00000000..3b29b356
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/cells/function/main.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/cells/slot/main.js b/vue-options-api-demos/grid/custom-rendering/cells/slot/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/cells/slot/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/cells/slot/main.vue b/vue-options-api-demos/grid/custom-rendering/cells/slot/main.vue
new file mode 100644
index 00000000..161ac4be
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/cells/slot/main.vue
@@ -0,0 +1,65 @@
+
+
+
+ {{ getNestedValue(props.field, props.dataItem) }}
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/detail/DetailComponent.vue b/vue-options-api-demos/grid/custom-rendering/detail/DetailComponent.vue
new file mode 100644
index 00000000..0cc16731
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/detail/DetailComponent.vue
@@ -0,0 +1,27 @@
+
+
+ Descriptions: {{dataItem.Descriptions}}
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/detail/main.js b/vue-options-api-demos/grid/custom-rendering/detail/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/detail/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/detail/main.vue b/vue-options-api-demos/grid/custom-rendering/detail/main.vue
new file mode 100644
index 00000000..c6655271
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/detail/main.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/detail/products.js b/vue-options-api-demos/grid/custom-rendering/detail/products.js
new file mode 100644
index 00000000..e626c67b
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/detail/products.js
@@ -0,0 +1,72 @@
+const products = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+];
+
+export { products };
diff --git a/vue-options-api-demos/grid/custom-rendering/footer/component/ComponentInstance.vue b/vue-options-api-demos/grid/custom-rendering/footer/component/ComponentInstance.vue
new file mode 100644
index 00000000..6fdb6b41
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/footer/component/ComponentInstance.vue
@@ -0,0 +1,37 @@
+
+{{ getNestedValue(field, dataItem)}}
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/footer/component/main.js b/vue-options-api-demos/grid/custom-rendering/footer/component/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/footer/component/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/footer/component/main.vue b/vue-options-api-demos/grid/custom-rendering/footer/component/main.vue
new file mode 100644
index 00000000..0e3ccfad
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/footer/component/main.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/footer/function/main.js b/vue-options-api-demos/grid/custom-rendering/footer/function/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/footer/function/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/footer/function/main.vue b/vue-options-api-demos/grid/custom-rendering/footer/function/main.vue
new file mode 100644
index 00000000..3775c3d5
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/footer/function/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/footer/slot/main.js b/vue-options-api-demos/grid/custom-rendering/footer/slot/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/footer/slot/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/footer/slot/main.vue b/vue-options-api-demos/grid/custom-rendering/footer/slot/main.vue
new file mode 100644
index 00000000..62fc56e1
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/footer/slot/main.vue
@@ -0,0 +1,55 @@
+
+
+
+ {{ props.field }}
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/group-header/CustomCell.vue b/vue-options-api-demos/grid/custom-rendering/group-header/CustomCell.vue
new file mode 100644
index 00000000..53a5e00c
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/group-header/CustomCell.vue
@@ -0,0 +1,65 @@
+
+
+ {{ getNestedValue(field, dataItem)}}
+
+
+
+
+
+ {{dataItem[field]}} something custom
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/group-header/main.js b/vue-options-api-demos/grid/custom-rendering/group-header/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/group-header/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/group-header/main.vue b/vue-options-api-demos/grid/custom-rendering/group-header/main.vue
new file mode 100644
index 00000000..b9be0d76
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/group-header/main.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/grouping/CustomCell.vue b/vue-options-api-demos/grid/custom-rendering/grouping/CustomCell.vue
new file mode 100644
index 00000000..f9b7b3ac
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/grouping/CustomCell.vue
@@ -0,0 +1,66 @@
+
+
+ {{ getNestedValue(field, dataItem)}}
+
+
+
+
+ {{dataItem[field]}}
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/grouping/main.js b/vue-options-api-demos/grid/custom-rendering/grouping/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/grouping/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/grouping/main.vue b/vue-options-api-demos/grid/custom-rendering/grouping/main.vue
new file mode 100644
index 00000000..7665c960
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/grouping/main.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/headers/component/ComponentInstance.vue b/vue-options-api-demos/grid/custom-rendering/headers/component/ComponentInstance.vue
new file mode 100644
index 00000000..6fdb6b41
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/headers/component/ComponentInstance.vue
@@ -0,0 +1,37 @@
+
+{{ getNestedValue(field, dataItem)}}
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/headers/component/main.js b/vue-options-api-demos/grid/custom-rendering/headers/component/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/headers/component/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/headers/component/main.vue b/vue-options-api-demos/grid/custom-rendering/headers/component/main.vue
new file mode 100644
index 00000000..1c5e3de7
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/headers/component/main.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/headers/function/main.js b/vue-options-api-demos/grid/custom-rendering/headers/function/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/headers/function/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/headers/function/main.vue b/vue-options-api-demos/grid/custom-rendering/headers/function/main.vue
new file mode 100644
index 00000000..f7ce2219
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/headers/function/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/headers/slot/main.js b/vue-options-api-demos/grid/custom-rendering/headers/slot/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/headers/slot/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/headers/slot/main.vue b/vue-options-api-demos/grid/custom-rendering/headers/slot/main.vue
new file mode 100644
index 00000000..4f539cba
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/headers/slot/main.vue
@@ -0,0 +1,55 @@
+
+
+
+ {{ props.field }}
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/hierarchy/DetailComponent.vue b/vue-options-api-demos/grid/custom-rendering/hierarchy/DetailComponent.vue
new file mode 100644
index 00000000..63b85864
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/hierarchy/DetailComponent.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/hierarchy/main.js b/vue-options-api-demos/grid/custom-rendering/hierarchy/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/hierarchy/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/hierarchy/main.vue b/vue-options-api-demos/grid/custom-rendering/hierarchy/main.vue
new file mode 100644
index 00000000..47e57511
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/hierarchy/main.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/hierarchy/products.js b/vue-options-api-demos/grid/custom-rendering/hierarchy/products.js
new file mode 100644
index 00000000..2a1ce279
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/hierarchy/products.js
@@ -0,0 +1,1313 @@
+const products = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+];
+
+export { products };
diff --git a/vue-options-api-demos/grid/custom-rendering/loader-template/main.js b/vue-options-api-demos/grid/custom-rendering/loader-template/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/loader-template/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/loader-template/main.vue b/vue-options-api-demos/grid/custom-rendering/loader-template/main.vue
new file mode 100644
index 00000000..fa5aa884
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/loader-template/main.vue
@@ -0,0 +1,130 @@
+
+
+
+ {{ loader ? 'Hide Loader' : 'Show Loader' }}
+
+
+
Choose loader type:
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/row-reorder/CustomCell.vue b/vue-options-api-demos/grid/custom-rendering/row-reorder/CustomCell.vue
new file mode 100644
index 00000000..b1f12e42
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/row-reorder/CustomCell.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/custom-rendering/row-reorder/main.js b/vue-options-api-demos/grid/custom-rendering/row-reorder/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/row-reorder/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/custom-rendering/row-reorder/main.vue b/vue-options-api-demos/grid/custom-rendering/row-reorder/main.vue
new file mode 100644
index 00000000..71c35e87
--- /dev/null
+++ b/vue-options-api-demos/grid/custom-rendering/row-reorder/main.vue
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/data-binding/local-data-operations/main.js b/vue-options-api-demos/grid/data-binding/local-data-operations/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/data-binding/local-data-operations/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/data-binding/local-data-operations/main.vue b/vue-options-api-demos/grid/data-binding/local-data-operations/main.vue
new file mode 100644
index 00000000..c5399032
--- /dev/null
+++ b/vue-options-api-demos/grid/data-binding/local-data-operations/main.vue
@@ -0,0 +1,182 @@
+
+
+
+
+
+ Add new
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/data-binding/odata4-crud/CommandCell.vue b/vue-options-api-demos/grid/data-binding/odata4-crud/CommandCell.vue
new file mode 100644
index 00000000..5767ab6f
--- /dev/null
+++ b/vue-options-api-demos/grid/data-binding/odata4-crud/CommandCell.vue
@@ -0,0 +1,73 @@
+
+
+
+ {{editText}}
+
+
+ {{removeText}}
+
+
+
+
diff --git a/vue-options-api-demos/grid/data-binding/odata4-crud/main.js b/vue-options-api-demos/grid/data-binding/odata4-crud/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/data-binding/odata4-crud/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/data-binding/odata4-crud/main.vue b/vue-options-api-demos/grid/data-binding/odata4-crud/main.vue
new file mode 100644
index 00000000..a172d8f3
--- /dev/null
+++ b/vue-options-api-demos/grid/data-binding/odata4-crud/main.vue
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+
+ Add new
+
+
+ Cancel current changes
+
+
+ There is no data available custom
+
+
+
diff --git a/vue-options-api-demos/grid/editing/basic/main.js b/vue-options-api-demos/grid/editing/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/editing/basic/main.vue b/vue-options-api-demos/grid/editing/basic/main.vue
new file mode 100644
index 00000000..fc41cca0
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/basic/main.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+ Add new
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/custom/CommandCell.vue b/vue-options-api-demos/grid/editing/custom/CommandCell.vue
new file mode 100644
index 00000000..ce996006
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/custom/CommandCell.vue
@@ -0,0 +1,61 @@
+
+
+
+ Edit
+
+
+ Remove
+
+
+
+
+ {{dataItem.ProductID? 'Update' : 'Add'}}
+
+
+ {{dataItem.ProductID? 'Cancel' : 'Discard'}}
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/custom/DropDownCell.vue b/vue-options-api-demos/grid/editing/custom/DropDownCell.vue
new file mode 100644
index 00000000..097b69e9
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/custom/DropDownCell.vue
@@ -0,0 +1,42 @@
+
+ {{ dataItem[field] }}
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/custom/main.js b/vue-options-api-demos/grid/editing/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/editing/custom/main.vue b/vue-options-api-demos/grid/editing/custom/main.vue
new file mode 100644
index 00000000..5bf92253
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/custom/main.vue
@@ -0,0 +1,207 @@
+
+
+
+
+
+
+ ddChange(e, props.dataItem)"
+ />
+
+
+
+ Add new
+
+
+ Cancel current changes
+
+
+ There is no data available custom
+
+
+
diff --git a/vue-options-api-demos/grid/editing/external/CommandCell.vue b/vue-options-api-demos/grid/editing/external/CommandCell.vue
new file mode 100644
index 00000000..55ed9949
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/external/CommandCell.vue
@@ -0,0 +1,49 @@
+
+
+
+ Edit
+
+
+
+ Remove
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/external/DialogContainer.vue b/vue-options-api-demos/grid/editing/external/DialogContainer.vue
new file mode 100644
index 00000000..d7d3718a
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/external/DialogContainer.vue
@@ -0,0 +1,88 @@
+
+
+
+
+ Save
+ Cancel
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/external/data.js b/vue-options-api-demos/grid/editing/external/data.js
new file mode 100644
index 00000000..771f15d1
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/external/data.js
@@ -0,0 +1,184 @@
+
+export const sampleProducts = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 20)
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 12)
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 26)
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.35,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 17)
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 22)
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 11, 1)
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ },
+ "FirstOrderedOn": new Date(1997, 1, 21)
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 5)
+ }
+];
+
diff --git a/vue-options-api-demos/grid/editing/external/main.js b/vue-options-api-demos/grid/editing/external/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/external/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/editing/external/main.vue b/vue-options-api-demos/grid/editing/external/main.vue
new file mode 100644
index 00000000..b1999053
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/external/main.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+ Add new
+
+
+
+ There is no data available custom
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/incell/main.js b/vue-options-api-demos/grid/editing/incell/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/incell/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/editing/incell/main.vue b/vue-options-api-demos/grid/editing/incell/main.vue
new file mode 100644
index 00000000..6a55a633
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/incell/main.vue
@@ -0,0 +1,159 @@
+
+
+
+
+ Save Changes
+
+
+ Cancel Changes
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/inline-form/CommandCell.vue b/vue-options-api-demos/grid/editing/inline-form/CommandCell.vue
new file mode 100644
index 00000000..c3b6ab9b
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/inline-form/CommandCell.vue
@@ -0,0 +1,57 @@
+
+
+
+ Edit
+
+
+ Remove
+
+
+
+
+ {{ dataItem.ProductID ? 'Update' : 'Add' }}
+
+
+ {{ dataItem.ProductID ? 'Cancel' : 'Discard' }}
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/inline-form/FormContent.vue b/vue-options-api-demos/grid/editing/inline-form/FormContent.vue
new file mode 100644
index 00000000..637a1b84
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/inline-form/FormContent.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/inline-form/FormInput.vue b/vue-options-api-demos/grid/editing/inline-form/FormInput.vue
new file mode 100644
index 00000000..fa49ba16
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/inline-form/FormInput.vue
@@ -0,0 +1,89 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/inline-form/NameCell.vue b/vue-options-api-demos/grid/editing/inline-form/NameCell.vue
new file mode 100644
index 00000000..10a5f810
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/inline-form/NameCell.vue
@@ -0,0 +1,58 @@
+
+ {{ dataItem[field] }}
+
+
+
+
+ Should be more than 3 symbols.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/editing/inline-form/main.js b/vue-options-api-demos/grid/editing/inline-form/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/inline-form/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/editing/inline-form/main.vue b/vue-options-api-demos/grid/editing/inline-form/main.vue
new file mode 100644
index 00000000..8550e0da
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/inline-form/main.vue
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+ nameChange(e, props.dataItem)"
+ @valid="updateNameValidState"
+ />
+
+
+
+ Add new
+
+
+ Cancel current changes
+
+
+ There is no data available custom
+
+
+
diff --git a/vue-options-api-demos/grid/editing/inline-form/verificationFunctions.js b/vue-options-api-demos/grid/editing/inline-form/verificationFunctions.js
new file mode 100644
index 00000000..75a77600
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/inline-form/verificationFunctions.js
@@ -0,0 +1,5 @@
+// Check if the length of the Name is above 3 symbols
+const isLengthAboveThree = (value) => value !== undefined && value.length > 3;
+
+export { isLengthAboveThree };
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/editing/inline/CommandCell.vue b/vue-options-api-demos/grid/editing/inline/CommandCell.vue
new file mode 100644
index 00000000..fc861d85
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/inline/CommandCell.vue
@@ -0,0 +1,73 @@
+
+
+
+ {{editText}}
+
+
+ {{removeText}}
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/inline/main.js b/vue-options-api-demos/grid/editing/inline/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/inline/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/editing/inline/main.vue b/vue-options-api-demos/grid/editing/inline/main.vue
new file mode 100644
index 00000000..dafd1b24
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/inline/main.vue
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+
+ Add new
+
+
+ Cancel current changes
+
+
+
+ There is no data available custom
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/validation/CommandCell.vue b/vue-options-api-demos/grid/editing/validation/CommandCell.vue
new file mode 100644
index 00000000..b78ab8cb
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/validation/CommandCell.vue
@@ -0,0 +1,62 @@
+
+
+
+ Edit
+
+
+ Remove
+
+
+
+
+ {{dataItem.ProductID? 'Update' : 'Add'}}
+
+
+ {{dataItem.ProductID? 'Cancel' : 'Discard'}}
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/validation/DatePickerCell.vue b/vue-options-api-demos/grid/editing/validation/DatePickerCell.vue
new file mode 100644
index 00000000..5989990c
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/validation/DatePickerCell.vue
@@ -0,0 +1,49 @@
+
+{{ formattedCurrentValue}}
+
+
+
+
+
+ Should be between 1.1.1995 and 31.12.2022
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/validation/InputCell.vue b/vue-options-api-demos/grid/editing/validation/InputCell.vue
new file mode 100644
index 00000000..eb945580
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/validation/InputCell.vue
@@ -0,0 +1,47 @@
+
+{{ dataItem[field]}}
+
+
+
+
+
+ Should be more than 3 symbols.
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/editing/validation/NumericCell.vue b/vue-options-api-demos/grid/editing/validation/NumericCell.vue
new file mode 100644
index 00000000..c5508af7
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/validation/NumericCell.vue
@@ -0,0 +1,50 @@
+
+ {{ currentValue }}
+
+
+
+ The field is Required
+ Should be between 0 and 500
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/editing/validation/main.js b/vue-options-api-demos/grid/editing/validation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/validation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/editing/validation/main.vue b/vue-options-api-demos/grid/editing/validation/main.vue
new file mode 100644
index 00000000..91f8a662
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/validation/main.vue
@@ -0,0 +1,251 @@
+
+
+
+
+
+
+ validate(props.dataItem)"
+ />
+
+
+ validate(props.dataItem)"
+ />
+
+
+ validate(props.dataItem)"
+ />
+
+
+
+ Add new
+
+
+ Cancel current changes
+
+
+
+ There is no data available custom
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/editing/validation/products.js b/vue-options-api-demos/grid/editing/validation/products.js
new file mode 100644
index 00000000..da9ef012
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/validation/products.js
@@ -0,0 +1,26 @@
+export default [
+ {
+ ProductID: 1,
+ ProductName: 'Chai',
+ UnitsInStock: 39,
+ FirstOrderedOn: new Date(1996, 8, 20)
+ },
+ {
+ ProductID: 2,
+ ProductName: 'Chang',
+ UnitsInStock: 17,
+ FirstOrderedOn: new Date(1996, 7, 12)
+ },
+ {
+ ProductID: 3,
+ ProductName: 'Aniseed Syrup',
+ UnitsInStock: 13,
+ FirstOrderedOn: new Date(1996, 8, 26)
+ },
+ {
+ ProductID: 4,
+ ProductName: "Chef Anton's Cajun Seasoning",
+ UnitsInStock: 53,
+ FirstOrderedOn: new Date(1996, 9, 19)
+ }
+];
diff --git a/vue-options-api-demos/grid/editing/validation/verificationFunctions.js b/vue-options-api-demos/grid/editing/validation/verificationFunctions.js
new file mode 100644
index 00000000..869fb3fd
--- /dev/null
+++ b/vue-options-api-demos/grid/editing/validation/verificationFunctions.js
@@ -0,0 +1,27 @@
+// Check if the Units field is not empty
+const unitsFieldHasValue = value => value === null || value === undefined ? false : true;
+
+// Check if the value in the Units field is between 0 and 500
+const unitsFieldValueIsInRange = value => value !== null && value >= 0 && value <= 500 ? true : false;
+
+// Check if the length of the Name is above 3 symbols
+const isLengthAboveThree = value => {
+ if (value === undefined) {
+ return false;
+ }
+ return value.length > 3;
+};
+
+// Check if the selected date is between 1.1.1995 and 31.12.2022
+const isDateBetweenRange = value => {
+ const yearOfTheDate = new Date(value).getFullYear();
+
+ return yearOfTheDate >= 1995 && yearOfTheDate <= 2022 ? true : false;
+};
+
+export {
+ unitsFieldHasValue,
+ unitsFieldValueIsInRange,
+ isLengthAboveThree,
+ isDateBetweenRange
+};
diff --git a/vue-options-api-demos/grid/excel/main.js b/vue-options-api-demos/grid/excel/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/excel/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/excel/main.vue b/vue-options-api-demos/grid/excel/main.vue
new file mode 100644
index 00000000..2d3b14cf
--- /dev/null
+++ b/vue-options-api-demos/grid/excel/main.vue
@@ -0,0 +1,58 @@
+
+
+ Export Excel
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/filtering/basic/boolean/main.js b/vue-options-api-demos/grid/filtering/basic/boolean/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/boolean/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/filtering/basic/boolean/main.vue b/vue-options-api-demos/grid/filtering/basic/boolean/main.vue
new file mode 100644
index 00000000..7a3d7194
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/boolean/main.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/filtering/basic/boolean/products.js b/vue-options-api-demos/grid/filtering/basic/boolean/products.js
new file mode 100644
index 00000000..ac539009
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/boolean/products.js
@@ -0,0 +1,184 @@
+const sampleProducts = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 20)
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 12)
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 26)
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.35,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 17)
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 22)
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 11, 1)
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ },
+ "FirstOrderedOn": new Date(1997, 1, 21)
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 5)
+ }
+];
+
+export { sampleProducts };
diff --git a/vue-options-api-demos/grid/filtering/basic/date/main.js b/vue-options-api-demos/grid/filtering/basic/date/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/date/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/filtering/basic/date/main.vue b/vue-options-api-demos/grid/filtering/basic/date/main.vue
new file mode 100644
index 00000000..766cc8a8
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/date/main.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/filtering/basic/date/products.js b/vue-options-api-demos/grid/filtering/basic/date/products.js
new file mode 100644
index 00000000..ac539009
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/date/products.js
@@ -0,0 +1,184 @@
+const sampleProducts = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 20)
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 12)
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 26)
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.35,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 17)
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 22)
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 11, 1)
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ },
+ "FirstOrderedOn": new Date(1997, 1, 21)
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 5)
+ }
+];
+
+export { sampleProducts };
diff --git a/vue-options-api-demos/grid/filtering/basic/main.js b/vue-options-api-demos/grid/filtering/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/filtering/basic/main.vue b/vue-options-api-demos/grid/filtering/basic/main.vue
new file mode 100644
index 00000000..bf448934
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/main.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/filtering/basic/number/main.js b/vue-options-api-demos/grid/filtering/basic/number/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/number/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/filtering/basic/number/main.vue b/vue-options-api-demos/grid/filtering/basic/number/main.vue
new file mode 100644
index 00000000..ea6d94eb
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/number/main.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/filtering/basic/number/products.js b/vue-options-api-demos/grid/filtering/basic/number/products.js
new file mode 100644
index 00000000..ac539009
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/number/products.js
@@ -0,0 +1,184 @@
+const sampleProducts = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 20)
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 12)
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 26)
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.35,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 17)
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 22)
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 11, 1)
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ },
+ "FirstOrderedOn": new Date(1997, 1, 21)
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 5)
+ }
+];
+
+export { sampleProducts };
diff --git a/vue-options-api-demos/grid/filtering/basic/products.js b/vue-options-api-demos/grid/filtering/basic/products.js
new file mode 100644
index 00000000..ac539009
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/products.js
@@ -0,0 +1,184 @@
+const sampleProducts = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 20)
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 12)
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 26)
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.35,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 17)
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 22)
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 11, 1)
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ },
+ "FirstOrderedOn": new Date(1997, 1, 21)
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 5)
+ }
+];
+
+export { sampleProducts };
diff --git a/vue-options-api-demos/grid/filtering/basic/string/main.js b/vue-options-api-demos/grid/filtering/basic/string/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/string/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/filtering/basic/string/main.vue b/vue-options-api-demos/grid/filtering/basic/string/main.vue
new file mode 100644
index 00000000..b8960cc2
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/string/main.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/filtering/basic/string/products.js b/vue-options-api-demos/grid/filtering/basic/string/products.js
new file mode 100644
index 00000000..ac539009
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/basic/string/products.js
@@ -0,0 +1,184 @@
+const sampleProducts = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 20)
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 12)
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 26)
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.35,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 17)
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 22)
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 11, 1)
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ },
+ "FirstOrderedOn": new Date(1997, 1, 21)
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 5)
+ }
+];
+
+export { sampleProducts };
diff --git a/vue-options-api-demos/grid/filtering/custom/main.js b/vue-options-api-demos/grid/filtering/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/filtering/custom/main.vue b/vue-options-api-demos/grid/filtering/custom/main.vue
new file mode 100644
index 00000000..333eff22
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/custom/main.vue
@@ -0,0 +1,87 @@
+
+
+
+
+ Filter Slot:
+ {
+ props.onChange({
+ operator: 'contains',
+ field: props.field,
+ value: ev.target.value,
+ syntheticEvent: ev,
+ });
+ }
+ "
+ />
+ {
+ props.onChange({ operator: '', field: '', value: '', event: ev });
+ }
+ "
+ >Clear
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/filtering/custom/products.js b/vue-options-api-demos/grid/filtering/custom/products.js
new file mode 100644
index 00000000..ed1076e6
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/custom/products.js
@@ -0,0 +1,185 @@
+const sampleProducts = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 20)
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 12)
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 26)
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.35,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 17)
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 22)
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 11, 1)
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ },
+ "FirstOrderedOn": new Date(1997, 1, 21)
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 5)
+ }
+];
+
+export { sampleProducts }
+;
diff --git a/vue-options-api-demos/grid/filtering/external/main.js b/vue-options-api-demos/grid/filtering/external/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/external/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/filtering/external/main.vue b/vue-options-api-demos/grid/filtering/external/main.vue
new file mode 100644
index 00000000..f4870737
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/external/main.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/filtering/external/products.js b/vue-options-api-demos/grid/filtering/external/products.js
new file mode 100644
index 00000000..d9bc9855
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/external/products.js
@@ -0,0 +1,184 @@
+const sampleProducts = [
+ {
+ ProductID: 1,
+ ProductName: "Chai",
+ SupplierID: 1,
+ CategoryID: 1,
+ QuantityPerUnit: "10 boxes x 20 bags",
+ UnitPrice: 18,
+ UnitsInStock: 39,
+ UnitsOnOrder: 0,
+ ReorderLevel: 10,
+ Discontinued: false,
+ Category: {
+ CategoryID: 1,
+ CategoryName: "Beverages",
+ Description: "Soft drinks, coffees, teas, beers, and ales"
+ },
+ FirstOrderedOn: new Date(1996, 8, 20)
+ },
+ {
+ ProductID: 2,
+ ProductName: "Chang",
+ SupplierID: 1,
+ CategoryID: 1,
+ QuantityPerUnit: "24 - 12 oz bottles",
+ UnitPrice: 19,
+ UnitsInStock: 17,
+ UnitsOnOrder: 40,
+ ReorderLevel: 25,
+ Discontinued: false,
+ Category: {
+ CategoryID: 1,
+ CategoryName: "Beverages",
+ Description: "Soft drinks, coffees, teas, beers, and ales"
+ },
+ FirstOrderedOn: new Date(1996, 7, 12)
+ },
+ {
+ ProductID: 3,
+ ProductName: "Aniseed Syrup",
+ SupplierID: 1,
+ CategoryID: 2,
+ QuantityPerUnit: "12 - 550 ml bottles",
+ UnitPrice: 10,
+ UnitsInStock: 13,
+ UnitsOnOrder: 70,
+ ReorderLevel: 25,
+ Discontinued: false,
+ Category: {
+ CategoryID: 2,
+ CategoryName: "Condiments",
+ Description: "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ FirstOrderedOn: new Date(1996, 8, 26)
+ },
+ {
+ ProductID: 4,
+ ProductName: "Chef Anton's Cajun Seasoning",
+ SupplierID: 2,
+ CategoryID: 2,
+ QuantityPerUnit: "48 - 6 oz jars",
+ UnitPrice: 22,
+ UnitsInStock: 53,
+ UnitsOnOrder: 0,
+ ReorderLevel: 0,
+ Discontinued: false,
+ Category: {
+ CategoryID: 2,
+ CategoryName: "Condiments",
+ Description: "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ FirstOrderedOn: new Date(1996, 9, 19)
+ },
+ {
+ ProductID: 5,
+ ProductName: "Chef Anton's Gumbo Mix",
+ SupplierID: 2,
+ CategoryID: 2,
+ QuantityPerUnit: "36 boxes",
+ UnitPrice: 21.35,
+ UnitsInStock: 0,
+ UnitsOnOrder: 0,
+ ReorderLevel: 0,
+ Discontinued: true,
+ Category: {
+ CategoryID: 2,
+ CategoryName: "Condiments",
+ Description: "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ FirstOrderedOn: new Date(1996, 7, 17)
+ },
+ {
+ ProductID: 6,
+ ProductName: "Grandma's Boysenberry Spread",
+ SupplierID: 3,
+ CategoryID: 2,
+ QuantityPerUnit: "12 - 8 oz jars",
+ UnitPrice: 25,
+ UnitsInStock: 120,
+ UnitsOnOrder: 0,
+ ReorderLevel: 25,
+ Discontinued: false,
+ Category: {
+ CategoryID: 2,
+ CategoryName: "Condiments",
+ Description: "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ FirstOrderedOn: new Date(1996, 9, 19)
+ },
+ {
+ ProductID: 7,
+ ProductName: "Uncle Bob's Organic Dried Pears",
+ SupplierID: 3,
+ CategoryID: 7,
+ QuantityPerUnit: "12 - 1 lb pkgs.",
+ UnitPrice: 30,
+ UnitsInStock: 15,
+ UnitsOnOrder: 0,
+ ReorderLevel: 10,
+ Discontinued: false,
+ Category: {
+ CategoryID: 7,
+ CategoryName: "Produce",
+ Description: "Dried fruit and bean curd"
+ },
+ FirstOrderedOn: new Date(1996, 7, 22)
+ },
+ {
+ ProductID: 8,
+ ProductName: "Northwoods Cranberry Sauce",
+ SupplierID: 3,
+ CategoryID: 2,
+ QuantityPerUnit: "12 - 12 oz jars",
+ UnitPrice: 40,
+ UnitsInStock: 6,
+ UnitsOnOrder: 0,
+ ReorderLevel: 0,
+ Discontinued: false,
+ Category: {
+ CategoryID: 2,
+ CategoryName: "Condiments",
+ Description: "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ FirstOrderedOn: new Date(1996, 11, 1)
+ },
+ {
+ ProductID: 9,
+ ProductName: "Mishi Kobe Niku",
+ SupplierID: 4,
+ CategoryID: 6,
+ QuantityPerUnit: "18 - 500 g pkgs.",
+ UnitPrice: 97,
+ UnitsInStock: 29,
+ UnitsOnOrder: 0,
+ ReorderLevel: 0,
+ Discontinued: true,
+ Category: {
+ CategoryID: 6,
+ CategoryName: "Meat/Poultry",
+ Description: "Prepared meats"
+ },
+ FirstOrderedOn: new Date(1997, 1, 21)
+ },
+ {
+ ProductID: 10,
+ ProductName: "Ikura",
+ SupplierID: 4,
+ CategoryID: 8,
+ QuantityPerUnit: "12 - 200 ml jars",
+ UnitPrice: 31,
+ UnitsInStock: 31,
+ UnitsOnOrder: 0,
+ ReorderLevel: 0,
+ Discontinued: false,
+ Category: {
+ CategoryID: 8,
+ CategoryName: "Seafood",
+ Description: "Seaweed and fish"
+ },
+ FirstOrderedOn: new Date(1996, 8, 5)
+ }
+];
+
+export { sampleProducts };
diff --git a/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.js b/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.vue b/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.vue
new file mode 100644
index 00000000..e4dae78b
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/main.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/products.js b/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/products.js
new file mode 100644
index 00000000..2055df16
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/row/custom-daterangepicker/products.js
@@ -0,0 +1,185 @@
+const sampleProducts = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 20)
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 12)
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 26)
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.35,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 17)
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 22)
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 11, 1)
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ },
+ "FirstOrderedOn": new Date(1997, 1, 21)
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 5)
+ }
+];
+
+export { sampleProducts }
+ ;
diff --git a/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.js b/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.vue b/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.vue
new file mode 100644
index 00000000..8901d3a4
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/main.vue
@@ -0,0 +1,96 @@
+
+
+
+
+ {
+ props.onChange({
+ operator: 'contains',
+ field: props.field,
+ value: ev.value.CategoryName,
+ syntheticEvent: ev,
+ });
+ }
+ "
+ />
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/products.js b/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/products.js
new file mode 100644
index 00000000..2055df16
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/row/custom-dropdownlist/products.js
@@ -0,0 +1,185 @@
+const sampleProducts = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 20)
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 12)
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 26)
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.35,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 17)
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 22)
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 11, 1)
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ },
+ "FirstOrderedOn": new Date(1997, 1, 21)
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 5)
+ }
+];
+
+export { sampleProducts }
+ ;
diff --git a/vue-options-api-demos/grid/filtering/row/custom-switch/main.js b/vue-options-api-demos/grid/filtering/row/custom-switch/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/row/custom-switch/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/filtering/row/custom-switch/main.vue b/vue-options-api-demos/grid/filtering/row/custom-switch/main.vue
new file mode 100644
index 00000000..289d82e6
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/row/custom-switch/main.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/filtering/row/custom-switch/products.js b/vue-options-api-demos/grid/filtering/row/custom-switch/products.js
new file mode 100644
index 00000000..2055df16
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/row/custom-switch/products.js
@@ -0,0 +1,185 @@
+const sampleProducts = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 20)
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 12)
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 26)
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.35,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 17)
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 22)
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 11, 1)
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ },
+ "FirstOrderedOn": new Date(1997, 1, 21)
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 5)
+ }
+];
+
+export { sampleProducts }
+ ;
diff --git a/vue-options-api-demos/grid/filtering/select-filter-type/main.js b/vue-options-api-demos/grid/filtering/select-filter-type/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/select-filter-type/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/filtering/select-filter-type/main.vue b/vue-options-api-demos/grid/filtering/select-filter-type/main.vue
new file mode 100644
index 00000000..92e0131c
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/select-filter-type/main.vue
@@ -0,0 +1,92 @@
+
+
+ Select Filter Type:
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/filtering/select-filter-type/products.js b/vue-options-api-demos/grid/filtering/select-filter-type/products.js
new file mode 100644
index 00000000..ac539009
--- /dev/null
+++ b/vue-options-api-demos/grid/filtering/select-filter-type/products.js
@@ -0,0 +1,184 @@
+const sampleProducts = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 20)
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 12)
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 26)
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.35,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 17)
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 22)
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 11, 1)
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ },
+ "FirstOrderedOn": new Date(1997, 1, 21)
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 5)
+ }
+];
+
+export { sampleProducts };
diff --git a/vue-options-api-demos/grid/globalization/main.js b/vue-options-api-demos/grid/globalization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/globalization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/globalization/main.vue b/vue-options-api-demos/grid/globalization/main.vue
new file mode 100644
index 00000000..37ab4830
--- /dev/null
+++ b/vue-options-api-demos/grid/globalization/main.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+ Change to {{ spanish ? 'English' : 'Spanish' }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/grouping/aggregates/CellComponent.vue b/vue-options-api-demos/grid/grouping/aggregates/CellComponent.vue
new file mode 100644
index 00000000..ac300691
--- /dev/null
+++ b/vue-options-api-demos/grid/grouping/aggregates/CellComponent.vue
@@ -0,0 +1,96 @@
+
+
+ {{ computedAggregates }}
+
+
+ {{ getNestedValue(field, dataItem) }}
+
+
+
+
+
+
+
+ {{ dataItem[field] }}
+
+
+
+
diff --git a/vue-options-api-demos/grid/grouping/aggregates/main.js b/vue-options-api-demos/grid/grouping/aggregates/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/grouping/aggregates/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/grouping/aggregates/main.vue b/vue-options-api-demos/grid/grouping/aggregates/main.vue
new file mode 100644
index 00000000..e895f15d
--- /dev/null
+++ b/vue-options-api-demos/grid/grouping/aggregates/main.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/grouping/basic/main.js b/vue-options-api-demos/grid/grouping/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/grouping/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/grouping/basic/main.vue b/vue-options-api-demos/grid/grouping/basic/main.vue
new file mode 100644
index 00000000..80618318
--- /dev/null
+++ b/vue-options-api-demos/grid/grouping/basic/main.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/grouping/virtual/main.js b/vue-options-api-demos/grid/grouping/virtual/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/grouping/virtual/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/grouping/virtual/main.vue b/vue-options-api-demos/grid/grouping/virtual/main.vue
new file mode 100644
index 00000000..e0852f47
--- /dev/null
+++ b/vue-options-api-demos/grid/grouping/virtual/main.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/grouping/virtual/products.js b/vue-options-api-demos/grid/grouping/virtual/products.js
new file mode 100644
index 00000000..2a1ce279
--- /dev/null
+++ b/vue-options-api-demos/grid/grouping/virtual/products.js
@@ -0,0 +1,1313 @@
+const products = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+];
+
+export { products };
diff --git a/vue-options-api-demos/grid/keyboard-inline/CommandCell.vue b/vue-options-api-demos/grid/keyboard-inline/CommandCell.vue
new file mode 100644
index 00000000..c6331e80
--- /dev/null
+++ b/vue-options-api-demos/grid/keyboard-inline/CommandCell.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{editText}}
+
+
+ {{removeText}}
+
+
+
+
diff --git a/vue-options-api-demos/grid/keyboard-inline/main.js b/vue-options-api-demos/grid/keyboard-inline/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/keyboard-inline/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/keyboard-inline/main.vue b/vue-options-api-demos/grid/keyboard-inline/main.vue
new file mode 100644
index 00000000..b1325a66
--- /dev/null
+++ b/vue-options-api-demos/grid/keyboard-inline/main.vue
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+
+ Add new
+
+
+ Cancel current changes
+
+
+
+ There is no data available custom
+
+
+
+
diff --git a/vue-options-api-demos/grid/keyboard-navigation/DetailComponent.vue b/vue-options-api-demos/grid/keyboard-navigation/DetailComponent.vue
new file mode 100644
index 00000000..670506c7
--- /dev/null
+++ b/vue-options-api-demos/grid/keyboard-navigation/DetailComponent.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/keyboard-navigation/main.js b/vue-options-api-demos/grid/keyboard-navigation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/keyboard-navigation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/keyboard-navigation/main.vue b/vue-options-api-demos/grid/keyboard-navigation/main.vue
new file mode 100644
index 00000000..7944474a
--- /dev/null
+++ b/vue-options-api-demos/grid/keyboard-navigation/main.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/keyboard-navigation/products.js b/vue-options-api-demos/grid/keyboard-navigation/products.js
new file mode 100644
index 00000000..2a1ce279
--- /dev/null
+++ b/vue-options-api-demos/grid/keyboard-navigation/products.js
@@ -0,0 +1,1313 @@
+const products = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0000,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.2300,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.7900,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.8900,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0000,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0000,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4000,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.6500,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.4500,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0000,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.7500,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0000,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.2500,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0000,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0000,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8000,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.4500,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0000,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5000,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.2500,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0000,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0000,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5000,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9000,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.2500,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.0500,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0000,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5000,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8000,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0000,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.7500,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0000,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+];
+
+export { products };
diff --git a/vue-options-api-demos/grid/live-data/ChangePriceComponent.vue b/vue-options-api-demos/grid/live-data/ChangePriceComponent.vue
new file mode 100644
index 00000000..442382f8
--- /dev/null
+++ b/vue-options-api-demos/grid/live-data/ChangePriceComponent.vue
@@ -0,0 +1,31 @@
+
+
+ {{ formattedNumber }}
+
+
+
+
diff --git a/vue-options-api-demos/grid/live-data/Grid.vue b/vue-options-api-demos/grid/live-data/Grid.vue
new file mode 100644
index 00000000..3b264dbd
--- /dev/null
+++ b/vue-options-api-demos/grid/live-data/Grid.vue
@@ -0,0 +1,200 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/live-data/PriceComponent.vue b/vue-options-api-demos/grid/live-data/PriceComponent.vue
new file mode 100644
index 00000000..8f5857f8
--- /dev/null
+++ b/vue-options-api-demos/grid/live-data/PriceComponent.vue
@@ -0,0 +1,25 @@
+
+ {{ formattedNumber }}
+
+
+
diff --git a/vue-options-api-demos/grid/live-data/RatingComponent.vue b/vue-options-api-demos/grid/live-data/RatingComponent.vue
new file mode 100644
index 00000000..69ca868f
--- /dev/null
+++ b/vue-options-api-demos/grid/live-data/RatingComponent.vue
@@ -0,0 +1,37 @@
+
+
+ {{ rating }}
+
+
+
+
diff --git a/vue-options-api-demos/grid/live-data/TickerComponent.vue b/vue-options-api-demos/grid/live-data/TickerComponent.vue
new file mode 100644
index 00000000..74602363
--- /dev/null
+++ b/vue-options-api-demos/grid/live-data/TickerComponent.vue
@@ -0,0 +1,24 @@
+
+
+
{{ dataItem[field] }}
+
+
+
diff --git a/vue-options-api-demos/grid/live-data/VolumeComponent.vue b/vue-options-api-demos/grid/live-data/VolumeComponent.vue
new file mode 100644
index 00000000..59570470
--- /dev/null
+++ b/vue-options-api-demos/grid/live-data/VolumeComponent.vue
@@ -0,0 +1,31 @@
+
+ {{ formattedNumber }}
+
+
+
diff --git a/vue-options-api-demos/grid/live-data/financial-data.js b/vue-options-api-demos/grid/live-data/financial-data.js
new file mode 100644
index 00000000..3b068f4e
--- /dev/null
+++ b/vue-options-api-demos/grid/live-data/financial-data.js
@@ -0,0 +1,319 @@
+const eighteenCImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/18C.png';
+const bitcoinImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/Bitcoin.png';
+const busdImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/BUSD.png';
+const ethImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/ETHERIUM.png';
+const eurImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/EUR.png';
+const gbpImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/GBP.png';
+const inchImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/INCH.png';
+const oxImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/OX.png';
+const shibImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/SHIB.png';
+const tetherusImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/TETHERUS.png';
+const usdImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/USD.png';
+const xecImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/grid/data-binding/XEC.png';
+
+export const MOCKFINANCEDATA = [
+ {
+ IndGrou: 'Airlines',
+ IndSect: 'Consumer, Cyclical',
+ IndSubg: 'Airlines',
+ SecType: 'PUBLIC',
+ CpnTyp: 'FIXED',
+ IssuerN: 'AMERICAN AIRLINES GROUP',
+ Moodys: 'WR',
+ Fitch: 'N.A.',
+ DBRS: 'N.A.',
+ CollatT: 'NEW MONEY',
+ Curncy: 'USD',
+ Security: '001765866 Pfd',
+ sector: 'Pfd',
+ CUSIP: '1765866',
+ Cpn: '7.875',
+ Maturity: '7/13/1939',
+ KRD_3YR: 0.00006,
+ RISK_COUNTRY: '',
+ MUNI_SECTOR: '',
+ ZV_SPREAD: 28.302,
+ KRD_5YR: 0,
+ KRD_1YR: -0.00187,
+ PD_WALA: null,
+ },
+];
+export const DATA = [
+ {
+ Ticker: 'OX',
+ Image: oxImage,
+ Spread: 0.01,
+ 'Open Price': 1.10345,
+ Price: 1.10345,
+ Buy: 1.10445,
+ Sell: 1.10245,
+ Change: -0.3683,
+ 'Change(%)': -0.0287,
+ Volume: 48387,
+ 'High(D)': 1.10545,
+ 'Low(D)': 1.10145,
+ 'High(Y)': 1.10545,
+ 'Low(Y)': 1.10145,
+ 'Start(Y)': 1.10245,
+ 'Change On Year(%)': 8.8502,
+ },
+ {
+ Ticker: 'USD',
+ Image: usdImage,
+ Type: 'Silver',
+ Spread: 0.01,
+ 'Open Price': 17.43,
+ Price: 17.42,
+ Buy: 17.43,
+ Sell: 17.43,
+ Change: -0.01,
+ 'Change(%)': -0.0574,
+ Volume: 11720,
+ 'High(D)': 17.51,
+ 'Low(D)': 17.37,
+ 'High(Y)': 18.06,
+ 'Low(Y)': 13.73,
+ 'Start(Y)': 15.895,
+ 'Change On Year(%)': 9.5942,
+ },
+ {
+ Ticker: 'SHIB',
+ Image: shibImage,
+ Type: 'Copper',
+ Spread: 0.02,
+ 'Open Price': 2.123,
+ Price: 2.113,
+ Buy: 2.123,
+ Sell: 2.123,
+ Change: -0.01,
+ 'Change(%)': -0.471,
+ Volume: 28819,
+ 'High(D)': 2.16,
+ 'Low(D)': 2.11,
+ 'High(Y)': 2.94,
+ 'Low(Y)': 1.96,
+ 'Start(Y)': 2.45,
+ 'Change On Year(%)': -13.7551,
+ },
+ {
+ Ticker: 'TETHERUS',
+ Image: tetherusImage,
+ Type: 'Platinum',
+ Spread: 0.01,
+ 'Open Price': 1071.6,
+ Price: 1071.0993,
+ Buy: 1071.0943,
+ Sell: 1071.1043,
+ Change: -0.5007,
+ 'Change(%)': -0.0467,
+ Volume: 3039,
+ 'High(D)': 1081.2,
+ 'Low(D)': 1070.5,
+ 'High(Y)': 1120.6,
+ 'Low(Y)': 812.4,
+ 'Start(Y)': 966.5,
+ 'Change On Year(%)': 10.8225,
+ },
+ {
+ Ticker: 'XEC',
+ Image: xecImage,
+ Type: 'Palladium',
+ Spread: 0.01,
+ 'Open Price': 600.55,
+ Price: 601.0005,
+ Buy: 600.9955,
+ Sell: 601.0055,
+ Change: 0.4505,
+ 'Change(%)': 0.075,
+ Volume: 651,
+ 'High(D)': 607.2,
+ 'Low(D)': 598.4,
+ 'High(Y)': 690,
+ 'Low(Y)': 458.6,
+ 'Start(Y)': 574.3,
+ 'Change On Year(%)': 4.6492,
+ },
+ {
+ Ticker: '18C',
+ Image: eighteenCImage,
+ Type: 'Oil',
+ Spread: 0.015,
+ 'Open Price': 45.54,
+ Price: 45.7899,
+ Buy: 45.7824,
+ Sell: 45.7974,
+ Change: 0.2499,
+ 'Change(%)': 0.5487,
+ Volume: 107196,
+ 'High(D)': 45.94,
+ 'Low(D)': 45.0,
+ 'High(Y)': 65.28,
+ 'Low(Y)': 30.79,
+ 'Start(Y)': 48.035,
+ 'Change On Year(%)': -4.6739,
+ },
+ {
+ Ticker: 'BITCOIN',
+ Image: bitcoinImage,
+ Type: 'Brent',
+ Spread: 0.01,
+ 'Open Price': 46.06,
+ Price: 46.05,
+ Buy: 46.06,
+ Sell: 46.06,
+ Change: -0.01,
+ 'Change(%)': -0.0217,
+ Volume: 59818,
+ 'High(D)': 46.48,
+ 'Low(D)': 45.6,
+ 'High(Y)': 71.14,
+ 'Low(Y)': 30.02,
+ 'Start(Y)': 50.58,
+ 'Change On Year(%)': -8.9561,
+ },
+ {
+ Ticker: 'ETHERIUM',
+ Image: ethImage,
+ Type: 'Natural Gas',
+ Spread: 0.02,
+ 'Open Price': 2.094,
+ Price: 2.104,
+ Buy: 2.094,
+ Sell: 2.094,
+ Change: 0.01,
+ 'Change(%)': 0.4776,
+ Volume: 2783,
+ 'High(D)': 2.11,
+ 'Low(D)': 2.09,
+ 'High(Y)': 3.2,
+ 'Low(Y)': 1.84,
+ 'Start(Y)': 2.52,
+ 'Change On Year(%)': -16.5079,
+ },
+ {
+ Ticker: 'INCH',
+ Image: inchImage,
+ Type: 'RBOB Gas',
+ Spread: 0.015,
+ 'Open Price': 1.5086,
+ Price: 1.9532,
+ Buy: 1.9457,
+ Sell: 1.9607,
+ Change: 0.4446,
+ 'Change(%)': 29.4686,
+ Volume: 2646,
+ 'High(D)': 1.9532,
+ 'Low(D)': 1.5,
+ 'High(Y)': 2.05,
+ 'Low(Y)': 1.15,
+ 'Start(Y)': 1.6,
+ 'Change On Year(%)': 22.0727,
+ },
+ {
+ Ticker: 'BUSD',
+ Image: busdImage,
+ Type: 'Diesel',
+ Spread: 0.015,
+ 'Open Price': 1.3474,
+ Price: 1.3574,
+ Buy: 1.3474,
+ Sell: 1.3474,
+ Change: 0.01,
+ 'Change(%)': 0.7422,
+ Volume: 2971,
+ 'High(D)': 1.36,
+ 'Low(D)': 1.34,
+ 'High(Y)': 2.11,
+ 'Low(Y)': 0.92,
+ 'Start(Y)': 1.515,
+ 'Change On Year(%)': -10.4026,
+ },
+ {
+ Ticker: 'GBP',
+ Image: gbpImage,
+ Type: 'Ethanol',
+ Spread: 0.01,
+ 'Open Price': 1.512,
+ Price: 2.7538,
+ Buy: 2.7488,
+ Sell: 2.7588,
+ Change: 1.2418,
+ 'Change(%)': 82.1323,
+ Volume: 14,
+ 'High(D)': 2.7538,
+ 'Low(D)': 1.1168,
+ 'High(Y)': 2.7538,
+ 'Low(Y)': 1.1168,
+ 'Start(Y)': 1.475,
+ 'Change On Year(%)': 86.7011,
+ },
+ {
+ Ticker: 'EUR',
+ Image: eurImage,
+ Type: 'Uranium',
+ Spread: 0.02,
+ 'Open Price': 27.55,
+ Price: 27.58,
+ Buy: 27.55,
+ Sell: 27.55,
+ Change: 0.03,
+ 'Change(%)': 0.1089,
+ Volume: 12,
+ 'High(D)': 27.55,
+ 'Low(D)': 27.55,
+ 'High(Y)': 29.32,
+ 'Low(Y)': 21.28,
+ 'Start(Y)': 25.3,
+ 'Change On Year(%)': 9.0119,
+ },
+];
+export class FinancialData {
+ generateData = (count) => {
+ const currData = [];
+
+ for (let i = 0; i < count; i++) {
+ const dataObj = Object.assign({}, DATA[i]);
+
+ for (const mockData of MOCKFINANCEDATA) {
+ for (const prop in mockData) {
+ if (mockData.hasOwnProperty(prop)) {
+ dataObj[prop] = mockData[prop];
+ }
+ }
+ }
+
+ dataObj.ID = i;
+ this.randomizeObjectData(dataObj);
+ currData.push(dataObj);
+ }
+
+ return currData;
+ };
+ randomizeObjectData = (dataObj) => {
+ const changeP = 'Change(%)';
+ const res = this.generateNewPrice(dataObj.Price);
+ dataObj.Change = res.Price - dataObj.Price;
+ dataObj.Price = res.Price;
+ dataObj[changeP] = res.ChangePercent;
+ };
+ generateNewPrice = (oldPrice) => {
+ const rnd = parseFloat(Math.random().toFixed(2));
+ const volatility = 2;
+ let newPrice = 0;
+ let changePercent = 2 * volatility * rnd;
+
+ if (changePercent > volatility) {
+ changePercent -= 2 * volatility;
+ }
+
+ const changeAmount = oldPrice * (changePercent / 100);
+ newPrice = oldPrice + changeAmount;
+ const result = {
+ Price: 0,
+ ChangePercent: 0,
+ };
+ result.Price = parseFloat(newPrice.toFixed(2));
+ result.ChangePercent = parseFloat(changePercent.toFixed(2));
+ return result;
+ };
+}
diff --git a/vue-options-api-demos/grid/live-data/main.js b/vue-options-api-demos/grid/live-data/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/live-data/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/live-data/main.vue b/vue-options-api-demos/grid/live-data/main.vue
new file mode 100644
index 00000000..59e3abfd
--- /dev/null
+++ b/vue-options-api-demos/grid/live-data/main.vue
@@ -0,0 +1,100 @@
+
+
+
+
+ Configurator
+
+
+
+ Select data refresh rate:
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/live-data/services.js b/vue-options-api-demos/grid/live-data/services.js
new file mode 100644
index 00000000..0ba85ee9
--- /dev/null
+++ b/vue-options-api-demos/grid/live-data/services.js
@@ -0,0 +1,52 @@
+export const updateRandomPrices = (data) => {
+ const newData = data.slice();
+
+ for (
+ let i = Math.round(Math.random() * 10);
+ i < newData.length;
+ i += Math.round(Math.random() * 10)
+ ) {
+ randomizeObjectData(newData[i]);
+ }
+
+ return newData;
+};
+export const updateAllPrices = (data) => {
+ const newData = data.slice();
+
+ for (const dataRow of newData) {
+ randomizeObjectData(dataRow);
+ }
+
+ return newData;
+};
+export const randomizeObjectData = (dataObj) => {
+ const changeP = 'Change(%)';
+ const res = generateNewPrice(dataObj.Price);
+ dataObj.Change = res.Price - dataObj.Price;
+ dataObj.Price = res.Price;
+ dataObj[changeP] = res.ChangePercent;
+};
+export const generateNewPrice = (oldPrice) => {
+ let rnd = Math.random();
+ rnd = Math.round(rnd * 100) / 100;
+ const volatility = 2;
+ let newPrice = 0;
+ let changePercent = 2 * volatility * rnd;
+
+ if (changePercent > volatility) {
+ changePercent -= 2 * volatility;
+ }
+
+ const changeAmount = oldPrice * (changePercent / 100);
+ newPrice = oldPrice + changeAmount;
+ newPrice = Math.round(newPrice * 100) / 100;
+ const result = {
+ Price: 0,
+ ChangePercent: 0,
+ };
+ changePercent = Math.round(changePercent * 100) / 100;
+ result.Price = newPrice;
+ result.ChangePercent = changePercent;
+ return result;
+};
diff --git a/vue-options-api-demos/grid/live-data/trends.js b/vue-options-api-demos/grid/live-data/trends.js
new file mode 100644
index 00000000..74334aa7
--- /dev/null
+++ b/vue-options-api-demos/grid/live-data/trends.js
@@ -0,0 +1,18 @@
+export const negative = (rowData) => {
+ return rowData['Change(%)'] < 0;
+};
+export const positive = (rowData) => {
+ return rowData['Change(%)'] > 0;
+};
+export const changeNegative = (rowData) => {
+ return rowData['Change(%)'] < 0 && rowData['Change(%)'] > -1;
+};
+export const changePositive = (rowData) => {
+ return rowData['Change(%)'] > 0 && rowData['Change(%)'] < 1;
+};
+export const strongPositive = (rowData) => {
+ return rowData['Change(%)'] >= 1;
+};
+export const strongNegative = (rowData) => {
+ return rowData['Change(%)'] <= -1;
+};
diff --git a/vue-options-api-demos/grid/live-data/utils.js b/vue-options-api-demos/grid/live-data/utils.js
new file mode 100644
index 00000000..2d138a89
--- /dev/null
+++ b/vue-options-api-demos/grid/live-data/utils.js
@@ -0,0 +1,60 @@
+import {
+ changeNegative,
+ changePositive,
+ negative,
+ positive,
+ strongNegative,
+ strongPositive,
+} from './trends';
+export const trends = (dataItem) => {
+ return {
+ changeNegative: changeNegative(dataItem),
+ changePositive: changePositive(dataItem),
+ negative: negative(dataItem),
+ positive: positive(dataItem),
+ strongNegative: strongNegative(dataItem),
+ strongPositive: strongPositive(dataItem),
+ };
+};
+export const nFormatter = (num) => {
+ const lookup = [
+ {
+ value: 1,
+ symbol: '',
+ },
+ {
+ value: 1e3,
+ symbol: 'K',
+ },
+ {
+ value: 1e6,
+ symbol: 'M',
+ },
+ {
+ value: 1e9,
+ symbol: 'G',
+ },
+ {
+ value: 1e12,
+ symbol: 'T',
+ },
+ {
+ value: 1e15,
+ symbol: 'P',
+ },
+ {
+ value: 1e18,
+ symbol: 'E',
+ },
+ ];
+ const rx = /\.0+$|(\.[0-9]*[1-9])0+$/;
+ let item = lookup
+ .slice()
+ .reverse()
+ .find(function (item) {
+ return num >= item.value;
+ });
+ return item
+ ? (num / item.value).toFixed(3).replace(rx, '$1') + item.symbol
+ : '0';
+};
diff --git a/vue-options-api-demos/grid/paging/basic/main.js b/vue-options-api-demos/grid/paging/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/paging/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/paging/basic/main.vue b/vue-options-api-demos/grid/paging/basic/main.vue
new file mode 100644
index 00000000..15d4eff4
--- /dev/null
+++ b/vue-options-api-demos/grid/paging/basic/main.vue
@@ -0,0 +1,88 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/paging/types/main.js b/vue-options-api-demos/grid/paging/types/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/paging/types/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/paging/types/main.vue b/vue-options-api-demos/grid/paging/types/main.vue
new file mode 100644
index 00000000..0adf76e3
--- /dev/null
+++ b/vue-options-api-demos/grid/paging/types/main.vue
@@ -0,0 +1,166 @@
+
+
+
+
+
+ Pager type:
+
+
+
+
+
+ Max. number of buttons:
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/pdf/all-pages/main.js b/vue-options-api-demos/grid/pdf/all-pages/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/pdf/all-pages/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/pdf/all-pages/main.vue b/vue-options-api-demos/grid/pdf/all-pages/main.vue
new file mode 100644
index 00000000..c5be79f6
--- /dev/null
+++ b/vue-options-api-demos/grid/pdf/all-pages/main.vue
@@ -0,0 +1,83 @@
+
+
+
Export pdf via a component
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/pdf/basic/main.js b/vue-options-api-demos/grid/pdf/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/pdf/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/pdf/basic/main.vue b/vue-options-api-demos/grid/pdf/basic/main.vue
new file mode 100644
index 00000000..133c53d7
--- /dev/null
+++ b/vue-options-api-demos/grid/pdf/basic/main.vue
@@ -0,0 +1,83 @@
+
+
+
Export pdf via a component
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/pdf/custom-columns/main.js b/vue-options-api-demos/grid/pdf/custom-columns/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/pdf/custom-columns/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/pdf/custom-columns/main.vue b/vue-options-api-demos/grid/pdf/custom-columns/main.vue
new file mode 100644
index 00000000..a846c981
--- /dev/null
+++ b/vue-options-api-demos/grid/pdf/custom-columns/main.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+ Export to PDF the first two columns(Current page)
+ Export to PDF the first two columns(All Grid data)
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/pdf/custom-fonts/main.js b/vue-options-api-demos/grid/pdf/custom-fonts/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/pdf/custom-fonts/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/pdf/custom-fonts/main.vue b/vue-options-api-demos/grid/pdf/custom-fonts/main.vue
new file mode 100644
index 00000000..115b7f6b
--- /dev/null
+++ b/vue-options-api-demos/grid/pdf/custom-fonts/main.vue
@@ -0,0 +1,84 @@
+
+
+
Export pdf via a component
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/pdf/custom-fonts/styles.css b/vue-options-api-demos/grid/pdf/custom-fonts/styles.css
new file mode 100644
index 00000000..77abc1f8
--- /dev/null
+++ b/vue-options-api-demos/grid/pdf/custom-fonts/styles.css
@@ -0,0 +1,38 @@
+ /*
+ Use the DejaVu Sans font for displaying and embedding in the PDF file.
+ The standard PDF fonts do not support Unicode characters.
+ */
+ div {
+ font-family: "DejaVu Sans", "Arial", sans-serif;
+ font-size: 12px;
+ }
+
+ /*
+ The examples load the DejaVu Sans from the Kendo UI CDN.
+ Other fonts have to be hosted from your application.
+ The official site of the Deja Vu Fonts project is
+ https://dejavu-fonts.github.io/.
+ */
+ @font-face {
+ font-family: "DejaVu Sans";
+ src: url("https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans.ttf") format("truetype");
+ }
+
+ @font-face {
+ font-family: "DejaVu Sans";
+ font-weight: bold;
+ src: url("https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans-Bold.ttf") format("truetype");
+ }
+
+ @font-face {
+ font-family: "DejaVu Sans";
+ font-style: italic;
+ src: url("https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf") format("truetype");
+ }
+
+ @font-face {
+ font-family: "DejaVu Sans";
+ font-weight: bold;
+ font-style: italic;
+ src: url("https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf") format("truetype");
+ }
diff --git a/vue-options-api-demos/grid/pdf/fit-content/main.js b/vue-options-api-demos/grid/pdf/fit-content/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/pdf/fit-content/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/pdf/fit-content/main.vue b/vue-options-api-demos/grid/pdf/fit-content/main.vue
new file mode 100644
index 00000000..9a1a9210
--- /dev/null
+++ b/vue-options-api-demos/grid/pdf/fit-content/main.vue
@@ -0,0 +1,86 @@
+
+
+
Export pdf via a component
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/pdf/page-template/main.js b/vue-options-api-demos/grid/pdf/page-template/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/pdf/page-template/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/pdf/page-template/main.vue b/vue-options-api-demos/grid/pdf/page-template/main.vue
new file mode 100644
index 00000000..b50bb1f6
--- /dev/null
+++ b/vue-options-api-demos/grid/pdf/page-template/main.vue
@@ -0,0 +1,96 @@
+
+
+
Export pdf via a component
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/performance/main.js b/vue-options-api-demos/grid/performance/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/performance/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/performance/main.vue b/vue-options-api-demos/grid/performance/main.vue
new file mode 100644
index 00000000..1ce99570
--- /dev/null
+++ b/vue-options-api-demos/grid/performance/main.vue
@@ -0,0 +1,145 @@
+
+
+
+ Load 100 000 items
+
+
+
+
+ Virtual Scrolling
+
+ Paging
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/persist-state/ColumnMenu.vue b/vue-options-api-demos/grid/persist-state/ColumnMenu.vue
new file mode 100644
index 00000000..1c5085e2
--- /dev/null
+++ b/vue-options-api-demos/grid/persist-state/ColumnMenu.vue
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ column.title }} - {{ idx }}
+
+
+
+
+
+ Reset
+ Save
+
+
+
+
+
+
+
+
+
+
+ Lock Column
+
+
+ Unlock Column
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/persist-state/DetailComponent.vue b/vue-options-api-demos/grid/persist-state/DetailComponent.vue
new file mode 100644
index 00000000..6758ceac
--- /dev/null
+++ b/vue-options-api-demos/grid/persist-state/DetailComponent.vue
@@ -0,0 +1,24 @@
+
+
+
+ Street: {{dataItem.shipAddress.street}}
+ City: {{dataItem.shipAddress.city}}
+ Country: {{dataItem.shipAddress.country}}
+ Postal Code: {{dataItem.shipAddress.postalCode}}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/persist-state/es.json b/vue-options-api-demos/grid/persist-state/es.json
new file mode 100644
index 00000000..72eb2b1c
--- /dev/null
+++ b/vue-options-api-demos/grid/persist-state/es.json
@@ -0,0 +1,55 @@
+{
+ "datepicker": {
+ "toggleCalendar": "Alternar calendario"
+ },
+ "calendar": {
+ "today": "Hoy"
+ },
+ "dateinput": {
+ "increment": "Incrementar valor",
+ "decrement": "Disminuir valor"
+ },
+ "numerictextbox": {
+ "increment": "Incrementar valor",
+ "decrement": "Disminuir valor"
+ },
+ "grid": {
+ "groupPanelEmpty": "Arrastre el título de una columna y suéltelo aquí para agrupar por ese criterio",
+ "noRecords": "No hay datos disponibles.",
+ "pagerFirstPage": "Ir a la primera página",
+ "pagerPreviousPage": "Ir a la página anterior",
+ "pagerNextPage": "Ir a la página siguiente",
+ "pagerLastPage": "Ir a la última página",
+ "pagerPage": "Página",
+ "pagerOf": "de",
+ "pagerTotalPages": "{0}",
+ "pagerItems": "ítems",
+ "pagerInfo": "{0} - {1} de {2} ítems",
+ "pagerItemsPerPage": "ítems por página",
+ "filterEqOperator": "Es igual a",
+ "filterNotEqOperator": "No es igual a",
+ "filterIsNullOperator": "Es nulo",
+ "filterIsNotNullOperator": "No es nulo",
+ "filterIsEmptyOperator": "Está vacío",
+ "filterIsNotEmptyOperator": "No está vacío",
+ "filterStartsWithOperator": "Comienza con",
+ "filterContainsOperator": "Contiene",
+ "filterNotContainsOperator": "No contiene",
+ "filterEndsWithOperator": "Termina en",
+ "filterGteOperator": "Es mayor o igual que",
+ "filterGtOperator": "Es mayor que",
+ "filterLteOperator": "Es menor o igual que",
+ "filterLtOperator": "Es menor o igual que",
+ "filterIsTrue": "Sí",
+ "filterIsFalse": "No",
+ "filterBooleanAll": "(Todas)",
+ "filterAfterOrEqualOperator": "Es posterior o igual a",
+ "filterAfterOperator": "Es posterior",
+ "filterBeforeOperator": "Es anterior",
+ "filterBeforeOrEqualOperator": "Es anterior o igual a",
+ "filterFilterButton": "Filtrar",
+ "filterClearButton": "Limpiar filtros",
+ "filterAndLogic": "Y",
+ "filterOrLogic": "O"
+ }
+}
diff --git a/vue-options-api-demos/grid/persist-state/main.js b/vue-options-api-demos/grid/persist-state/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/persist-state/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/persist-state/main.vue b/vue-options-api-demos/grid/persist-state/main.vue
new file mode 100644
index 00000000..4940da0b
--- /dev/null
+++ b/vue-options-api-demos/grid/persist-state/main.vue
@@ -0,0 +1,349 @@
+
+
+ Save Grid State
+ Reload Grid State
+
+
+
+
+
+
+
+
+
+
+ props.onSortchange(e)"
+ @lockchange="(e) => lockChange(e, props.column)"
+ @visibilitychange="(e) => visibilityChange(e, props.column)"
+ @filterchange="(e) => props.onFilterchange(e)"
+ @closemenu="(e) => props.onClosemenu(e)"
+ @contentfocus="(e) => props.onContentfocus(e)"
+ @columnssubmit="onColumnsSubmit"
+ />
+
+
+
+
+
+ Locale:
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/persist-state/orders.json b/vue-options-api-demos/grid/persist-state/orders.json
new file mode 100644
index 00000000..9d8d8ac9
--- /dev/null
+++ b/vue-options-api-demos/grid/persist-state/orders.json
@@ -0,0 +1,25576 @@
+[
+ {
+ "orderID": 10271,
+ "customerID": "SPLIR",
+ "employeeID": 6,
+ "orderDate": "1996-08-01 00:00:00.000",
+ "requiredDate": "1996-08-29 00:00:00.000",
+ "shippedDate": "1996-08-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.54,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10266,
+ "customerID": "WARTH",
+ "employeeID": 3,
+ "orderDate": "1996-07-26 00:00:00.000",
+ "requiredDate": "1996-09-06 00:00:00.000",
+ "shippedDate": "1996-07-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 25.73,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 30.4,
+ "quantity": 12,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10279,
+ "customerID": "LEHMS",
+ "employeeID": 8,
+ "orderDate": "1996-08-13 00:00:00.000",
+ "requiredDate": "1996-09-10 00:00:00.000",
+ "shippedDate": "1996-08-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.83,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10292,
+ "customerID": "TRADH",
+ "employeeID": 1,
+ "orderDate": "1996-08-28 00:00:00.000",
+ "requiredDate": "1996-09-25 00:00:00.000",
+ "shippedDate": "1996-09-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.35,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10295,
+ "customerID": "VINET",
+ "employeeID": 2,
+ "orderDate": "1996-09-02 00:00:00.000",
+ "requiredDate": "1996-09-30 00:00:00.000",
+ "shippedDate": "1996-09-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.15,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10313,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1996-09-24 00:00:00.000",
+ "requiredDate": "1996-10-22 00:00:00.000",
+ "shippedDate": "1996-10-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.96,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10317,
+ "customerID": "LONEP",
+ "employeeID": 6,
+ "orderDate": "1996-09-30 00:00:00.000",
+ "requiredDate": "1996-10-28 00:00:00.000",
+ "shippedDate": "1996-10-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.69,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10322,
+ "customerID": "PERIC",
+ "employeeID": 7,
+ "orderDate": "1996-10-04 00:00:00.000",
+ "requiredDate": "1996-11-01 00:00:00.000",
+ "shippedDate": "1996-10-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.4,
+ "shipName": "Pericles Comidas clásicas",
+ "shipAddress": {
+ "street": "Calle Dr. Jorge Cash 321",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10320,
+ "customerID": "WARTH",
+ "employeeID": 5,
+ "orderDate": "1996-10-03 00:00:00.000",
+ "requiredDate": "1996-10-17 00:00:00.000",
+ "shippedDate": "1996-10-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 34.57,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10321,
+ "customerID": "ISLAT",
+ "employeeID": 3,
+ "orderDate": "1996-10-03 00:00:00.000",
+ "requiredDate": "1996-10-31 00:00:00.000",
+ "shippedDate": "1996-10-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.43,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10336,
+ "customerID": "PRINI",
+ "employeeID": 7,
+ "orderDate": "1996-10-23 00:00:00.000",
+ "requiredDate": "1996-11-20 00:00:00.000",
+ "shippedDate": "1996-10-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 15.51,
+ "shipName": "Princesa Isabel Vinhos",
+ "shipAddress": {
+ "street": "Estrada da saúde n. 58",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1756,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 18,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10349,
+ "customerID": "SPLIR",
+ "employeeID": 7,
+ "orderDate": "1996-11-08 00:00:00.000",
+ "requiredDate": "1996-12-06 00:00:00.000",
+ "shippedDate": "1996-11-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.63,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10331,
+ "customerID": "BONAP",
+ "employeeID": 9,
+ "orderDate": "1996-10-16 00:00:00.000",
+ "requiredDate": "1996-11-27 00:00:00.000",
+ "shippedDate": "1996-10-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 10.19,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10365,
+ "customerID": "ANTON",
+ "employeeID": 3,
+ "orderDate": "1996-11-27 00:00:00.000",
+ "requiredDate": "1996-12-25 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 22,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10371,
+ "customerID": "LAMAI",
+ "employeeID": 1,
+ "orderDate": "1996-12-03 00:00:00.000",
+ "requiredDate": "1996-12-31 00:00:00.000",
+ "shippedDate": "1996-12-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.45,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 6,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10376,
+ "customerID": "MEREP",
+ "employeeID": 1,
+ "orderDate": "1996-12-09 00:00:00.000",
+ "requiredDate": "1997-01-06 00:00:00.000",
+ "shippedDate": "1996-12-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 20.39,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 42,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10378,
+ "customerID": "FOLKO",
+ "employeeID": 5,
+ "orderDate": "1996-12-10 00:00:00.000",
+ "requiredDate": "1997-01-07 00:00:00.000",
+ "shippedDate": "1996-12-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 5.44,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10392,
+ "customerID": "PICCO",
+ "employeeID": 2,
+ "orderDate": "1996-12-24 00:00:00.000",
+ "requiredDate": "1997-01-21 00:00:00.000",
+ "shippedDate": "1997-01-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 122.46,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10391,
+ "customerID": "DRACD",
+ "employeeID": 3,
+ "orderDate": "1996-12-23 00:00:00.000",
+ "requiredDate": "1997-01-20 00:00:00.000",
+ "shippedDate": "1996-12-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 5.45,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10405,
+ "customerID": "LINOD",
+ "employeeID": 1,
+ "orderDate": "1997-01-06 00:00:00.000",
+ "requiredDate": "1997-02-03 00:00:00.000",
+ "shippedDate": "1997-01-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 34.82,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 8,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10412,
+ "customerID": "WARTH",
+ "employeeID": 8,
+ "orderDate": "1997-01-13 00:00:00.000",
+ "requiredDate": "1997-02-10 00:00:00.000",
+ "shippedDate": "1997-01-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.77,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10422,
+ "customerID": "FRANS",
+ "employeeID": 2,
+ "orderDate": "1997-01-22 00:00:00.000",
+ "requiredDate": "1997-02-19 00:00:00.000",
+ "shippedDate": "1997-01-31 00:00:00.000",
+ "shipVia": 1,
+ "freight": 3.02,
+ "shipName": "Franchi S.p.A.",
+ "shipAddress": {
+ "street": "Via Monte Bianco 34",
+ "city": "Torino",
+ "region": "NULL",
+ "postalCode": 10100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10433,
+ "customerID": "PRINI",
+ "employeeID": 3,
+ "orderDate": "1997-02-03 00:00:00.000",
+ "requiredDate": "1997-03-03 00:00:00.000",
+ "shippedDate": "1997-03-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 73.83,
+ "shipName": "Princesa Isabel Vinhos",
+ "shipAddress": {
+ "street": "Estrada da saúde n. 58",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1756,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10427,
+ "customerID": "PICCO",
+ "employeeID": 4,
+ "orderDate": "1997-01-27 00:00:00.000",
+ "requiredDate": "1997-02-24 00:00:00.000",
+ "shippedDate": "1997-03-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 31.29,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10437,
+ "customerID": "WARTH",
+ "employeeID": 8,
+ "orderDate": "1997-02-05 00:00:00.000",
+ "requiredDate": "1997-03-05 00:00:00.000",
+ "shippedDate": "1997-02-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 19.97,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10428,
+ "customerID": "REGGC",
+ "employeeID": 7,
+ "orderDate": "1997-01-28 00:00:00.000",
+ "requiredDate": "1997-02-25 00:00:00.000",
+ "shippedDate": "1997-02-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.09,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10441,
+ "customerID": "OLDWO",
+ "employeeID": 3,
+ "orderDate": "1997-02-10 00:00:00.000",
+ "requiredDate": "1997-03-24 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 73.02,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 27,
+ "unitPrice": 35.1,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10457,
+ "customerID": "KOENE",
+ "employeeID": 2,
+ "orderDate": "1997-02-25 00:00:00.000",
+ "requiredDate": "1997-03-25 00:00:00.000",
+ "shippedDate": "1997-03-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.57,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 36,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10478,
+ "customerID": "VICTE",
+ "employeeID": 2,
+ "orderDate": "1997-03-18 00:00:00.000",
+ "requiredDate": "1997-04-01 00:00:00.000",
+ "shippedDate": "1997-03-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.81,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10482,
+ "customerID": "LAZYK",
+ "employeeID": 1,
+ "orderDate": "1997-03-21 00:00:00.000",
+ "requiredDate": "1997-04-18 00:00:00.000",
+ "shippedDate": "1997-04-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7.48,
+ "shipName": "Lazy K Kountry Store",
+ "shipAddress": {
+ "street": "12 Orchestra Terrace",
+ "city": "Walla Walla",
+ "region": "WA",
+ "postalCode": 99362,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10494,
+ "customerID": "COMMI",
+ "employeeID": 4,
+ "orderDate": "1997-04-02 00:00:00.000",
+ "requiredDate": "1997-04-30 00:00:00.000",
+ "shippedDate": "1997-04-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 65.99,
+ "shipName": "Comércio Mineiro",
+ "shipAddress": {
+ "street": "Av. dos Lusíadas 23",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05432-043",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10501,
+ "customerID": "BLAUS",
+ "employeeID": 9,
+ "orderDate": "1997-04-09 00:00:00.000",
+ "requiredDate": "1997-05-07 00:00:00.000",
+ "shippedDate": "1997-04-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 8.85,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10496,
+ "customerID": "TRADH",
+ "employeeID": 7,
+ "orderDate": "1997-04-04 00:00:00.000",
+ "requiredDate": "1997-05-02 00:00:00.000",
+ "shippedDate": "1997-04-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 46.77,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10509,
+ "customerID": "BLAUS",
+ "employeeID": 4,
+ "orderDate": "1997-04-17 00:00:00.000",
+ "requiredDate": "1997-05-15 00:00:00.000",
+ "shippedDate": "1997-04-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.15,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10505,
+ "customerID": "MEREP",
+ "employeeID": 3,
+ "orderDate": "1997-04-14 00:00:00.000",
+ "requiredDate": "1997-05-12 00:00:00.000",
+ "shippedDate": "1997-04-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7.13,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10545,
+ "customerID": "LAZYK",
+ "employeeID": 8,
+ "orderDate": "1997-05-22 00:00:00.000",
+ "requiredDate": "1997-06-19 00:00:00.000",
+ "shippedDate": "1997-06-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 11.92,
+ "shipName": "Lazy K Kountry Store",
+ "shipAddress": {
+ "street": "12 Orchestra Terrace",
+ "city": "Walla Walla",
+ "region": "WA",
+ "postalCode": 99362,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10556,
+ "customerID": "SIMOB",
+ "employeeID": 2,
+ "orderDate": "1997-06-03 00:00:00.000",
+ "requiredDate": "1997-07-15 00:00:00.000",
+ "shippedDate": "1997-06-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 9.8,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10568,
+ "customerID": "GALED",
+ "employeeID": 3,
+ "orderDate": "1997-06-13 00:00:00.000",
+ "requiredDate": "1997-07-11 00:00:00.000",
+ "shippedDate": "1997-07-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 6.54,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10581,
+ "customerID": "FAMIA",
+ "employeeID": 3,
+ "orderDate": "1997-06-26 00:00:00.000",
+ "requiredDate": "1997-07-24 00:00:00.000",
+ "shippedDate": "1997-07-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 3.01,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10585,
+ "customerID": "WELLI",
+ "employeeID": 7,
+ "orderDate": "1997-07-01 00:00:00.000",
+ "requiredDate": "1997-07-29 00:00:00.000",
+ "shippedDate": "1997-07-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 13.41,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10586,
+ "customerID": "REGGC",
+ "employeeID": 9,
+ "orderDate": "1997-07-02 00:00:00.000",
+ "requiredDate": "1997-07-30 00:00:00.000",
+ "shippedDate": "1997-07-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.48,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 4,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10589,
+ "customerID": "GREAL",
+ "employeeID": 8,
+ "orderDate": "1997-07-04 00:00:00.000",
+ "requiredDate": "1997-08-01 00:00:00.000",
+ "shippedDate": "1997-07-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.42,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10584,
+ "customerID": "BLONP",
+ "employeeID": 4,
+ "orderDate": "1997-06-30 00:00:00.000",
+ "requiredDate": "1997-07-28 00:00:00.000",
+ "shippedDate": "1997-07-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 59.14,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 50,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10599,
+ "customerID": "BSBEV",
+ "employeeID": 6,
+ "orderDate": "1997-07-15 00:00:00.000",
+ "requiredDate": "1997-08-26 00:00:00.000",
+ "shippedDate": "1997-07-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 29.98,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10602,
+ "customerID": "VAFFE",
+ "employeeID": 8,
+ "orderDate": "1997-07-17 00:00:00.000",
+ "requiredDate": "1997-08-14 00:00:00.000",
+ "shippedDate": "1997-07-22 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.92,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 5,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10608,
+ "customerID": "TOMSP",
+ "employeeID": 4,
+ "orderDate": "1997-07-23 00:00:00.000",
+ "requiredDate": "1997-08-20 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 27.79,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10610,
+ "customerID": "LAMAI",
+ "employeeID": 8,
+ "orderDate": "1997-07-25 00:00:00.000",
+ "requiredDate": "1997-08-22 00:00:00.000",
+ "shippedDate": "1997-08-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 26.78,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 21,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10615,
+ "customerID": "WILMK",
+ "employeeID": 2,
+ "orderDate": "1997-07-30 00:00:00.000",
+ "requiredDate": "1997-08-27 00:00:00.000",
+ "shippedDate": "1997-08-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.75,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10617,
+ "customerID": "GREAL",
+ "employeeID": 4,
+ "orderDate": "1997-07-31 00:00:00.000",
+ "requiredDate": "1997-08-28 00:00:00.000",
+ "shippedDate": "1997-08-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 18.53,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10628,
+ "customerID": "BLONP",
+ "employeeID": 4,
+ "orderDate": "1997-08-12 00:00:00.000",
+ "requiredDate": "1997-09-09 00:00:00.000",
+ "shippedDate": "1997-08-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 30.36,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10631,
+ "customerID": "LAMAI",
+ "employeeID": 8,
+ "orderDate": "1997-08-14 00:00:00.000",
+ "requiredDate": "1997-09-11 00:00:00.000",
+ "shippedDate": "1997-08-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.87,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 8,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10639,
+ "customerID": "SANTG",
+ "employeeID": 7,
+ "orderDate": "1997-08-20 00:00:00.000",
+ "requiredDate": "1997-09-17 00:00:00.000",
+ "shippedDate": "1997-08-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 38.64,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10655,
+ "customerID": "REGGC",
+ "employeeID": 1,
+ "orderDate": "1997-09-03 00:00:00.000",
+ "requiredDate": "1997-10-01 00:00:00.000",
+ "shippedDate": "1997-09-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.41,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10660,
+ "customerID": "HUNGC",
+ "employeeID": 8,
+ "orderDate": "1997-09-08 00:00:00.000",
+ "requiredDate": "1997-10-06 00:00:00.000",
+ "shippedDate": "1997-10-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 111.29,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10662,
+ "customerID": "LONEP",
+ "employeeID": 3,
+ "orderDate": "1997-09-09 00:00:00.000",
+ "requiredDate": "1997-10-07 00:00:00.000",
+ "shippedDate": "1997-09-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.28,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10669,
+ "customerID": "SIMOB",
+ "employeeID": 2,
+ "orderDate": "1997-09-15 00:00:00.000",
+ "requiredDate": "1997-10-13 00:00:00.000",
+ "shippedDate": "1997-09-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 24.39,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10679,
+ "customerID": "BLONP",
+ "employeeID": 8,
+ "orderDate": "1997-09-23 00:00:00.000",
+ "requiredDate": "1997-10-21 00:00:00.000",
+ "shippedDate": "1997-09-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 27.94,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10683,
+ "customerID": "DUMON",
+ "employeeID": 2,
+ "orderDate": "1997-09-26 00:00:00.000",
+ "requiredDate": "1997-10-24 00:00:00.000",
+ "shippedDate": "1997-10-01 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.4,
+ "shipName": "Du monde entier",
+ "shipAddress": {
+ "street": "67 rue des Cinquante Otages",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10674,
+ "customerID": "ISLAT",
+ "employeeID": 4,
+ "orderDate": "1997-09-18 00:00:00.000",
+ "requiredDate": "1997-10-16 00:00:00.000",
+ "shippedDate": "1997-09-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.9,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10692,
+ "customerID": "ALFKI",
+ "employeeID": 4,
+ "orderDate": "1997-10-03 00:00:00.000",
+ "requiredDate": "1997-10-31 00:00:00.000",
+ "shippedDate": "1997-10-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 61.02,
+ "shipName": "Alfred's Futterkiste",
+ "shipAddress": {
+ "street": "Obere Str. 57",
+ "city": "Berlin",
+ "region": "NULL",
+ "postalCode": 12209,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10689,
+ "customerID": "BERGS",
+ "employeeID": 1,
+ "orderDate": "1997-10-01 00:00:00.000",
+ "requiredDate": "1997-10-29 00:00:00.000",
+ "shippedDate": "1997-10-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.42,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10699,
+ "customerID": "MORGK",
+ "employeeID": 3,
+ "orderDate": "1997-10-09 00:00:00.000",
+ "requiredDate": "1997-11-06 00:00:00.000",
+ "shippedDate": "1997-10-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.58,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10721,
+ "customerID": "QUICK",
+ "employeeID": 5,
+ "orderDate": "1997-10-29 00:00:00.000",
+ "requiredDate": "1997-11-26 00:00:00.000",
+ "shippedDate": "1997-10-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 48.92,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 50,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10723,
+ "customerID": "WHITC",
+ "employeeID": 3,
+ "orderDate": "1997-10-30 00:00:00.000",
+ "requiredDate": "1997-11-27 00:00:00.000",
+ "shippedDate": "1997-11-25 00:00:00.000",
+ "shipVia": 1,
+ "freight": 21.72,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10738,
+ "customerID": "SPECD",
+ "employeeID": 2,
+ "orderDate": "1997-11-12 00:00:00.000",
+ "requiredDate": "1997-12-10 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.91,
+ "shipName": "Spécialités du monde",
+ "shipAddress": {
+ "street": "25 rue Lauriston",
+ "city": "Paris",
+ "region": "NULL",
+ "postalCode": 75016,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10741,
+ "customerID": "AROUT",
+ "employeeID": 4,
+ "orderDate": "1997-11-14 00:00:00.000",
+ "requiredDate": "1997-11-28 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 10.96,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 15,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10732,
+ "customerID": "BONAP",
+ "employeeID": 3,
+ "orderDate": "1997-11-06 00:00:00.000",
+ "requiredDate": "1997-12-04 00:00:00.000",
+ "shippedDate": "1997-11-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.97,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10743,
+ "customerID": "AROUT",
+ "employeeID": 1,
+ "orderDate": "1997-11-17 00:00:00.000",
+ "requiredDate": "1997-12-15 00:00:00.000",
+ "shippedDate": "1997-11-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 23.72,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 28,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10754,
+ "customerID": "MAGAA",
+ "employeeID": 6,
+ "orderDate": "1997-11-25 00:00:00.000",
+ "requiredDate": "1997-12-23 00:00:00.000",
+ "shippedDate": "1997-11-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 2.38,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10744,
+ "customerID": "VAFFE",
+ "employeeID": 6,
+ "orderDate": "1997-11-17 00:00:00.000",
+ "requiredDate": "1997-12-15 00:00:00.000",
+ "shippedDate": "1997-11-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 69.19,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10765,
+ "customerID": "QUICK",
+ "employeeID": 3,
+ "orderDate": "1997-12-04 00:00:00.000",
+ "requiredDate": "1998-01-01 00:00:00.000",
+ "shippedDate": "1997-12-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 42.74,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 80,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10770,
+ "customerID": "HANAR",
+ "employeeID": 8,
+ "orderDate": "1997-12-09 00:00:00.000",
+ "requiredDate": "1998-01-06 00:00:00.000",
+ "shippedDate": "1997-12-17 00:00:00.000",
+ "shipVia": 3,
+ "freight": 5.32,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10771,
+ "customerID": "ERNSH",
+ "employeeID": 9,
+ "orderDate": "1997-12-10 00:00:00.000",
+ "requiredDate": "1998-01-07 00:00:00.000",
+ "shippedDate": "1998-01-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 11.19,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10767,
+ "customerID": "SUPRD",
+ "employeeID": 4,
+ "orderDate": "1997-12-05 00:00:00.000",
+ "requiredDate": "1998-01-02 00:00:00.000",
+ "shippedDate": "1997-12-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.59,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10782,
+ "customerID": "CACTU",
+ "employeeID": 9,
+ "orderDate": "1997-12-17 00:00:00.000",
+ "requiredDate": "1998-01-14 00:00:00.000",
+ "shippedDate": "1997-12-22 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.1,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10777,
+ "customerID": "GOURL",
+ "employeeID": 7,
+ "orderDate": "1997-12-15 00:00:00.000",
+ "requiredDate": "1997-12-29 00:00:00.000",
+ "shippedDate": "1998-01-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.01,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10778,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1997-12-16 00:00:00.000",
+ "requiredDate": "1998-01-13 00:00:00.000",
+ "shippedDate": "1997-12-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 6.79,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10797,
+ "customerID": "DRACD",
+ "employeeID": 7,
+ "orderDate": "1997-12-25 00:00:00.000",
+ "requiredDate": "1998-01-22 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 33.35,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10807,
+ "customerID": "FRANS",
+ "employeeID": 4,
+ "orderDate": "1997-12-31 00:00:00.000",
+ "requiredDate": "1998-01-28 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.36,
+ "shipName": "Franchi S.p.A.",
+ "shipAddress": {
+ "street": "Via Monte Bianco 34",
+ "city": "Torino",
+ "region": "NULL",
+ "postalCode": 10100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10809,
+ "customerID": "WELLI",
+ "employeeID": 7,
+ "orderDate": "1998-01-01 00:00:00.000",
+ "requiredDate": "1998-01-29 00:00:00.000",
+ "shippedDate": "1998-01-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.87,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10815,
+ "customerID": "SAVEA",
+ "employeeID": 2,
+ "orderDate": "1998-01-05 00:00:00.000",
+ "requiredDate": "1998-02-02 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 14.62,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10820,
+ "customerID": "RATTC",
+ "employeeID": 3,
+ "orderDate": "1998-01-07 00:00:00.000",
+ "requiredDate": "1998-02-04 00:00:00.000",
+ "shippedDate": "1998-01-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 37.52,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10843,
+ "customerID": "VICTE",
+ "employeeID": 4,
+ "orderDate": "1998-01-21 00:00:00.000",
+ "requiredDate": "1998-02-18 00:00:00.000",
+ "shippedDate": "1998-01-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 9.26,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 4,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10844,
+ "customerID": "PICCO",
+ "employeeID": 8,
+ "orderDate": "1998-01-21 00:00:00.000",
+ "requiredDate": "1998-02-18 00:00:00.000",
+ "shippedDate": "1998-01-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.22,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10853,
+ "customerID": "BLAUS",
+ "employeeID": 9,
+ "orderDate": "1998-01-27 00:00:00.000",
+ "requiredDate": "1998-02-24 00:00:00.000",
+ "shippedDate": "1998-02-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 53.83,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10874,
+ "customerID": "GODOS",
+ "employeeID": 5,
+ "orderDate": "1998-02-06 00:00:00.000",
+ "requiredDate": "1998-03-06 00:00:00.000",
+ "shippedDate": "1998-02-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 19.58,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10867,
+ "customerID": "LONEP",
+ "employeeID": 6,
+ "orderDate": "1998-02-03 00:00:00.000",
+ "requiredDate": "1998-03-17 00:00:00.000",
+ "shippedDate": "1998-02-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.93,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10878,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1998-02-10 00:00:00.000",
+ "requiredDate": "1998-03-10 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 46.69,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10883,
+ "customerID": "LONEP",
+ "employeeID": 8,
+ "orderDate": "1998-02-12 00:00:00.000",
+ "requiredDate": "1998-03-12 00:00:00.000",
+ "shippedDate": "1998-02-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.53,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10887,
+ "customerID": "GALED",
+ "employeeID": 8,
+ "orderDate": "1998-02-13 00:00:00.000",
+ "requiredDate": "1998-03-13 00:00:00.000",
+ "shippedDate": "1998-02-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.25,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10891,
+ "customerID": "LEHMS",
+ "employeeID": 7,
+ "orderDate": "1998-02-17 00:00:00.000",
+ "requiredDate": "1998-03-17 00:00:00.000",
+ "shippedDate": "1998-02-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 20.37,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10892,
+ "customerID": "MAISD",
+ "employeeID": 4,
+ "orderDate": "1998-02-17 00:00:00.000",
+ "requiredDate": "1998-03-17 00:00:00.000",
+ "shippedDate": "1998-02-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 120.27,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10881,
+ "customerID": "CACTU",
+ "employeeID": 4,
+ "orderDate": "1998-02-11 00:00:00.000",
+ "requiredDate": "1998-03-11 00:00:00.000",
+ "shippedDate": "1998-02-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.84,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10900,
+ "customerID": "WELLI",
+ "employeeID": 1,
+ "orderDate": "1998-02-20 00:00:00.000",
+ "requiredDate": "1998-03-20 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.66,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 3,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10905,
+ "customerID": "WELLI",
+ "employeeID": 9,
+ "orderDate": "1998-02-24 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-03-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.72,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10914,
+ "customerID": "QUEEN",
+ "employeeID": 6,
+ "orderDate": "1998-02-27 00:00:00.000",
+ "requiredDate": "1998-03-27 00:00:00.000",
+ "shippedDate": "1998-03-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 21.19,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10906,
+ "customerID": "WOLZA",
+ "employeeID": 4,
+ "orderDate": "1998-02-25 00:00:00.000",
+ "requiredDate": "1998-03-11 00:00:00.000",
+ "shippedDate": "1998-03-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 26.29,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10907,
+ "customerID": "SPECD",
+ "employeeID": 6,
+ "orderDate": "1998-02-25 00:00:00.000",
+ "requiredDate": "1998-03-25 00:00:00.000",
+ "shippedDate": "1998-02-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 9.19,
+ "shipName": "Spécialités du monde",
+ "shipAddress": {
+ "street": "25 rue Lauriston",
+ "city": "Paris",
+ "region": "NULL",
+ "postalCode": 75016,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10920,
+ "customerID": "AROUT",
+ "employeeID": 4,
+ "orderDate": "1998-03-03 00:00:00.000",
+ "requiredDate": "1998-03-31 00:00:00.000",
+ "shippedDate": "1998-03-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 29.61,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 50,
+ "unitPrice": 16.25,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10934,
+ "customerID": "LEHMS",
+ "employeeID": 3,
+ "orderDate": "1998-03-09 00:00:00.000",
+ "requiredDate": "1998-04-06 00:00:00.000",
+ "shippedDate": "1998-03-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 32.01,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10936,
+ "customerID": "GREAL",
+ "employeeID": 3,
+ "orderDate": "1998-03-09 00:00:00.000",
+ "requiredDate": "1998-04-06 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 33.68,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10942,
+ "customerID": "REGGC",
+ "employeeID": 9,
+ "orderDate": "1998-03-11 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 17.95,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10947,
+ "customerID": "BSBEV",
+ "employeeID": 3,
+ "orderDate": "1998-03-13 00:00:00.000",
+ "requiredDate": "1998-04-10 00:00:00.000",
+ "shippedDate": "1998-03-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.26,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10955,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1998-03-17 00:00:00.000",
+ "requiredDate": "1998-04-14 00:00:00.000",
+ "shippedDate": "1998-03-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.26,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 12,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10950,
+ "customerID": "MAGAA",
+ "employeeID": 1,
+ "orderDate": "1998-03-16 00:00:00.000",
+ "requiredDate": "1998-04-13 00:00:00.000",
+ "shippedDate": "1998-03-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.5,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10963,
+ "customerID": "FURIB",
+ "employeeID": 9,
+ "orderDate": "1998-03-19 00:00:00.000",
+ "requiredDate": "1998-04-16 00:00:00.000",
+ "shippedDate": "1998-03-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 2.7,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 2,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10969,
+ "customerID": "COMMI",
+ "employeeID": 1,
+ "orderDate": "1998-03-23 00:00:00.000",
+ "requiredDate": "1998-04-20 00:00:00.000",
+ "shippedDate": "1998-03-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.21,
+ "shipName": "Comércio Mineiro",
+ "shipAddress": {
+ "street": "Av. dos Lusíadas 23",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05432-043",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10970,
+ "customerID": "BOLID",
+ "employeeID": 9,
+ "orderDate": "1998-03-24 00:00:00.000",
+ "requiredDate": "1998-04-07 00:00:00.000",
+ "shippedDate": "1998-04-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.16,
+ "shipName": "Bólido Comidas preparadas",
+ "shipAddress": {
+ "street": "C/ Araquil 67",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28023,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10971,
+ "customerID": "FRANR",
+ "employeeID": 2,
+ "orderDate": "1998-03-24 00:00:00.000",
+ "requiredDate": "1998-04-21 00:00:00.000",
+ "shippedDate": "1998-04-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 121.82,
+ "shipName": "France restauration",
+ "shipAddress": {
+ "street": "54 rue Royale",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10965,
+ "customerID": "OLDWO",
+ "employeeID": 6,
+ "orderDate": "1998-03-20 00:00:00.000",
+ "requiredDate": "1998-04-17 00:00:00.000",
+ "shippedDate": "1998-03-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 144.38,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10974,
+ "customerID": "SPLIR",
+ "employeeID": 3,
+ "orderDate": "1998-03-25 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-04-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 12.96,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10980,
+ "customerID": "FOLKO",
+ "employeeID": 4,
+ "orderDate": "1998-03-27 00:00:00.000",
+ "requiredDate": "1998-05-08 00:00:00.000",
+ "shippedDate": "1998-04-17 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.26,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10981,
+ "customerID": "HANAR",
+ "employeeID": 1,
+ "orderDate": "1998-03-27 00:00:00.000",
+ "requiredDate": "1998-04-24 00:00:00.000",
+ "shippedDate": "1998-04-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 193.37,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10959,
+ "customerID": "GOURL",
+ "employeeID": 6,
+ "orderDate": "1998-03-18 00:00:00.000",
+ "requiredDate": "1998-04-29 00:00:00.000",
+ "shippedDate": "1998-03-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.98,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10992,
+ "customerID": "THEBI",
+ "employeeID": 1,
+ "orderDate": "1998-04-01 00:00:00.000",
+ "requiredDate": "1998-04-29 00:00:00.000",
+ "shippedDate": "1998-04-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.27,
+ "shipName": "The Big Cheese",
+ "shipAddress": {
+ "street": "89 Jefferson Way Suite 2",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97201,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10994,
+ "customerID": "VAFFE",
+ "employeeID": 2,
+ "orderDate": "1998-04-02 00:00:00.000",
+ "requiredDate": "1998-04-16 00:00:00.000",
+ "shippedDate": "1998-04-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 65.53,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 18,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10996,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1998-04-02 00:00:00.000",
+ "requiredDate": "1998-04-30 00:00:00.000",
+ "shippedDate": "1998-04-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.12,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11014,
+ "customerID": "LINOD",
+ "employeeID": 2,
+ "orderDate": "1998-04-10 00:00:00.000",
+ "requiredDate": "1998-05-08 00:00:00.000",
+ "shippedDate": "1998-04-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 23.6,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 28,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 11020,
+ "customerID": "OTTIK",
+ "employeeID": 2,
+ "orderDate": "1998-04-14 00:00:00.000",
+ "requiredDate": "1998-05-12 00:00:00.000",
+ "shippedDate": "1998-04-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 43.3,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 24,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 11040,
+ "customerID": "GREAL",
+ "employeeID": 4,
+ "orderDate": "1998-04-22 00:00:00.000",
+ "requiredDate": "1998-05-20 00:00:00.000",
+ "shippedDate": "NULL",
+ "shipVia": 3,
+ "freight": 18.84,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11043,
+ "customerID": "SPECD",
+ "employeeID": 5,
+ "orderDate": "1998-04-22 00:00:00.000",
+ "requiredDate": "1998-05-20 00:00:00.000",
+ "shippedDate": "1998-04-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.8,
+ "shipName": "Spécialités du monde",
+ "shipAddress": {
+ "street": "25 rue Lauriston",
+ "city": "Paris",
+ "region": "NULL",
+ "postalCode": 75016,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11044,
+ "customerID": "WOLZA",
+ "employeeID": 4,
+ "orderDate": "1998-04-23 00:00:00.000",
+ "requiredDate": "1998-05-21 00:00:00.000",
+ "shippedDate": "1998-05-01 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.72,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11048,
+ "customerID": "BOTTM",
+ "employeeID": 7,
+ "orderDate": "1998-04-24 00:00:00.000",
+ "requiredDate": "1998-05-22 00:00:00.000",
+ "shippedDate": "1998-04-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 24.12,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 42,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11037,
+ "customerID": "GODOS",
+ "employeeID": 7,
+ "orderDate": "1998-04-21 00:00:00.000",
+ "requiredDate": "1998-05-19 00:00:00.000",
+ "shippedDate": "1998-04-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 3.2,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11050,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1998-04-27 00:00:00.000",
+ "requiredDate": "1998-05-25 00:00:00.000",
+ "shippedDate": "1998-05-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 59.41,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 50,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 11057,
+ "customerID": "NORTS",
+ "employeeID": 3,
+ "orderDate": "1998-04-29 00:00:00.000",
+ "requiredDate": "1998-05-27 00:00:00.000",
+ "shippedDate": "1998-05-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.13,
+ "shipName": "North/South",
+ "shipAddress": {
+ "street": "South House 300 Queensbridge",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "SW7 1RZ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11061,
+ "customerID": "GREAL",
+ "employeeID": 4,
+ "orderDate": "1998-04-30 00:00:00.000",
+ "requiredDate": "1998-06-11 00:00:00.000",
+ "shippedDate": "NULL",
+ "shipVia": 3,
+ "freight": 14.01,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11051,
+ "customerID": "LAMAI",
+ "employeeID": 7,
+ "orderDate": "1998-04-27 00:00:00.000",
+ "requiredDate": "1998-05-25 00:00:00.000",
+ "shippedDate": "NULL",
+ "shipVia": 3,
+ "freight": 2.79,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 11067,
+ "customerID": "DRACD",
+ "employeeID": 1,
+ "orderDate": "1998-05-04 00:00:00.000",
+ "requiredDate": "1998-05-18 00:00:00.000",
+ "shippedDate": "1998-05-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.98,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11069,
+ "customerID": "TORTU",
+ "employeeID": 1,
+ "orderDate": "1998-05-04 00:00:00.000",
+ "requiredDate": "1998-06-01 00:00:00.000",
+ "shippedDate": "1998-05-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 15.67,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11074,
+ "customerID": "SIMOB",
+ "employeeID": 7,
+ "orderDate": "1998-05-06 00:00:00.000",
+ "requiredDate": "1998-06-03 00:00:00.000",
+ "shippedDate": "NULL",
+ "shipVia": 2,
+ "freight": 18.44,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 14,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10248,
+ "customerID": "VINET",
+ "employeeID": 5,
+ "orderDate": "1996-07-04 00:00:00.000",
+ "requiredDate": "1996-08-01 00:00:00.000",
+ "shippedDate": "1996-07-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 32.38,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 14,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 9.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10249,
+ "customerID": "TOMSP",
+ "employeeID": 6,
+ "orderDate": "1996-07-05 00:00:00.000",
+ "requiredDate": "1996-08-16 00:00:00.000",
+ "shippedDate": "1996-07-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.61,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10250,
+ "customerID": "HANAR",
+ "employeeID": 4,
+ "orderDate": "1996-07-08 00:00:00.000",
+ "requiredDate": "1996-08-05 00:00:00.000",
+ "shippedDate": "1996-07-12 00:00:00.000",
+ "shipVia": 2,
+ "freight": 65.83,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10252,
+ "customerID": "SUPRD",
+ "employeeID": 4,
+ "orderDate": "1996-07-09 00:00:00.000",
+ "requiredDate": "1996-08-06 00:00:00.000",
+ "shippedDate": "1996-07-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 51.3,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 40,
+ "discount": 0.05
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 25,
+ "discount": 0.05
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10253,
+ "customerID": "HANAR",
+ "employeeID": 3,
+ "orderDate": "1996-07-10 00:00:00.000",
+ "requiredDate": "1996-07-24 00:00:00.000",
+ "shippedDate": "1996-07-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.17,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10251,
+ "customerID": "VICTE",
+ "employeeID": 3,
+ "orderDate": "1996-07-08 00:00:00.000",
+ "requiredDate": "1996-08-05 00:00:00.000",
+ "shippedDate": "1996-07-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 41.34,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 16.8,
+ "quantity": 6,
+ "discount": 0.05
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10257,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1996-07-16 00:00:00.000",
+ "requiredDate": "1996-08-13 00:00:00.000",
+ "shippedDate": "1996-07-22 00:00:00.000",
+ "shipVia": 3,
+ "freight": 81.91,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 27,
+ "unitPrice": 35.1,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10258,
+ "customerID": "ERNSH",
+ "employeeID": 1,
+ "orderDate": "1996-07-17 00:00:00.000",
+ "requiredDate": "1996-08-14 00:00:00.000",
+ "shippedDate": "1996-07-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 140.51,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 50,
+ "discount": 0.2
+ },
+ {
+ "productID": 5,
+ "unitPrice": 17,
+ "quantity": 65,
+ "discount": 0.2
+ },
+ {
+ "productID": 32,
+ "unitPrice": 25.6,
+ "quantity": 6,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10259,
+ "customerID": "CENTC",
+ "employeeID": 4,
+ "orderDate": "1996-07-18 00:00:00.000",
+ "requiredDate": "1996-08-15 00:00:00.000",
+ "shippedDate": "1996-07-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.25,
+ "shipName": "Centro comercial Moctezuma",
+ "shipAddress": {
+ "street": "Sierras de Granada 9993",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5022,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 37,
+ "unitPrice": 20.8,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10260,
+ "customerID": "OTTIK",
+ "employeeID": 4,
+ "orderDate": "1996-07-19 00:00:00.000",
+ "requiredDate": "1996-08-16 00:00:00.000",
+ "shippedDate": "1996-07-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.09,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 16,
+ "discount": 0.25
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 21,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10261,
+ "customerID": "QUEDE",
+ "employeeID": 4,
+ "orderDate": "1996-07-19 00:00:00.000",
+ "requiredDate": "1996-08-16 00:00:00.000",
+ "shippedDate": "1996-07-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.05,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10262,
+ "customerID": "RATTC",
+ "employeeID": 8,
+ "orderDate": "1996-07-22 00:00:00.000",
+ "requiredDate": "1996-08-19 00:00:00.000",
+ "shippedDate": "1996-07-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 48.29,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 5,
+ "unitPrice": 17,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 7,
+ "unitPrice": 24,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10256,
+ "customerID": "WELLI",
+ "employeeID": 3,
+ "orderDate": "1996-07-15 00:00:00.000",
+ "requiredDate": "1996-08-12 00:00:00.000",
+ "shippedDate": "1996-07-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.97,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10255,
+ "customerID": "RICSU",
+ "employeeID": 9,
+ "orderDate": "1996-07-12 00:00:00.000",
+ "requiredDate": "1996-08-09 00:00:00.000",
+ "shippedDate": "1996-07-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 148.33,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10264,
+ "customerID": "FOLKO",
+ "employeeID": 6,
+ "orderDate": "1996-07-24 00:00:00.000",
+ "requiredDate": "1996-08-21 00:00:00.000",
+ "shippedDate": "1996-08-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.67,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 25,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10265,
+ "customerID": "BLONP",
+ "employeeID": 2,
+ "orderDate": "1996-07-25 00:00:00.000",
+ "requiredDate": "1996-08-22 00:00:00.000",
+ "shippedDate": "1996-08-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.28,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10254,
+ "customerID": "CHOPS",
+ "employeeID": 5,
+ "orderDate": "1996-07-11 00:00:00.000",
+ "requiredDate": "1996-08-08 00:00:00.000",
+ "shippedDate": "1996-07-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 22.98,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 21,
+ "discount": 0.15
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10263,
+ "customerID": "ERNSH",
+ "employeeID": 9,
+ "orderDate": "1996-07-23 00:00:00.000",
+ "requiredDate": "1996-08-20 00:00:00.000",
+ "shippedDate": "1996-07-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 146.06,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 60,
+ "discount": 0.25
+ },
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 60,
+ "discount": 0.25
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 36,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10268,
+ "customerID": "GROSR",
+ "employeeID": 8,
+ "orderDate": "1996-07-30 00:00:00.000",
+ "requiredDate": "1996-08-27 00:00:00.000",
+ "shippedDate": "1996-08-02 00:00:00.000",
+ "shipVia": 3,
+ "freight": 66.29,
+ "shipName": "GROSELLA-Restaurante",
+ "shipAddress": {
+ "street": "5ª Ave. Los Palos Grandes",
+ "city": "Caracas",
+ "region": "DF",
+ "postalCode": 1081,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10267,
+ "customerID": "FRANK",
+ "employeeID": 4,
+ "orderDate": "1996-07-29 00:00:00.000",
+ "requiredDate": "1996-08-26 00:00:00.000",
+ "shippedDate": "1996-08-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 208.58,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 70,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10270,
+ "customerID": "WARTH",
+ "employeeID": 1,
+ "orderDate": "1996-08-01 00:00:00.000",
+ "requiredDate": "1996-08-29 00:00:00.000",
+ "shippedDate": "1996-08-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 136.54,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10274,
+ "customerID": "VINET",
+ "employeeID": 6,
+ "orderDate": "1996-08-06 00:00:00.000",
+ "requiredDate": "1996-09-03 00:00:00.000",
+ "shippedDate": "1996-08-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 6.01,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10275,
+ "customerID": "MAGAA",
+ "employeeID": 1,
+ "orderDate": "1996-08-07 00:00:00.000",
+ "requiredDate": "1996-09-04 00:00:00.000",
+ "shippedDate": "1996-08-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 26.93,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 6,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10276,
+ "customerID": "TORTU",
+ "employeeID": 8,
+ "orderDate": "1996-08-08 00:00:00.000",
+ "requiredDate": "1996-08-22 00:00:00.000",
+ "shippedDate": "1996-08-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.84,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10277,
+ "customerID": "MORGK",
+ "employeeID": 2,
+ "orderDate": "1996-08-09 00:00:00.000",
+ "requiredDate": "1996-09-06 00:00:00.000",
+ "shippedDate": "1996-08-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 125.77,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10273,
+ "customerID": "QUICK",
+ "employeeID": 3,
+ "orderDate": "1996-08-05 00:00:00.000",
+ "requiredDate": "1996-09-02 00:00:00.000",
+ "shippedDate": "1996-08-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 76.07,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 33,
+ "discount": 0.05
+ },
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 24,
+ "discount": 0.05
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10272,
+ "customerID": "RATTC",
+ "employeeID": 6,
+ "orderDate": "1996-08-02 00:00:00.000",
+ "requiredDate": "1996-08-30 00:00:00.000",
+ "shippedDate": "1996-08-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 98.03,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10278,
+ "customerID": "BERGS",
+ "employeeID": 8,
+ "orderDate": "1996-08-12 00:00:00.000",
+ "requiredDate": "1996-09-09 00:00:00.000",
+ "shippedDate": "1996-08-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 92.69,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 73,
+ "unitPrice": 12,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10269,
+ "customerID": "WHITC",
+ "employeeID": 5,
+ "orderDate": "1996-07-31 00:00:00.000",
+ "requiredDate": "1996-08-14 00:00:00.000",
+ "shippedDate": "1996-08-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.56,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10280,
+ "customerID": "BERGS",
+ "employeeID": 2,
+ "orderDate": "1996-08-14 00:00:00.000",
+ "requiredDate": "1996-09-11 00:00:00.000",
+ "shippedDate": "1996-09-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.98,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10281,
+ "customerID": "ROMEY",
+ "employeeID": 4,
+ "orderDate": "1996-08-14 00:00:00.000",
+ "requiredDate": "1996-08-28 00:00:00.000",
+ "shippedDate": "1996-08-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.94,
+ "shipName": "Romero y tomillo",
+ "shipAddress": {
+ "street": "Gran Vía 1",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28001,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 1,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10282,
+ "customerID": "ROMEY",
+ "employeeID": 4,
+ "orderDate": "1996-08-15 00:00:00.000",
+ "requiredDate": "1996-09-12 00:00:00.000",
+ "shippedDate": "1996-08-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.69,
+ "shipName": "Romero y tomillo",
+ "shipAddress": {
+ "street": "Gran Vía 1",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28001,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10283,
+ "customerID": "LILAS",
+ "employeeID": 3,
+ "orderDate": "1996-08-16 00:00:00.000",
+ "requiredDate": "1996-09-13 00:00:00.000",
+ "shippedDate": "1996-08-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 84.81,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 12.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10284,
+ "customerID": "LEHMS",
+ "employeeID": 4,
+ "orderDate": "1996-08-19 00:00:00.000",
+ "requiredDate": "1996-09-16 00:00:00.000",
+ "shippedDate": "1996-08-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 76.56,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 27,
+ "unitPrice": 35.1,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 67,
+ "unitPrice": 11.2,
+ "quantity": 5,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10285,
+ "customerID": "QUICK",
+ "employeeID": 1,
+ "orderDate": "1996-08-20 00:00:00.000",
+ "requiredDate": "1996-09-17 00:00:00.000",
+ "shippedDate": "1996-08-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 76.83,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 45,
+ "discount": 0.2
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 36,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10286,
+ "customerID": "QUICK",
+ "employeeID": 8,
+ "orderDate": "1996-08-21 00:00:00.000",
+ "requiredDate": "1996-09-18 00:00:00.000",
+ "shippedDate": "1996-08-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 229.24,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 100,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10287,
+ "customerID": "RICAR",
+ "employeeID": 8,
+ "orderDate": "1996-08-22 00:00:00.000",
+ "requiredDate": "1996-09-19 00:00:00.000",
+ "shippedDate": "1996-08-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 12.76,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10288,
+ "customerID": "REGGC",
+ "employeeID": 4,
+ "orderDate": "1996-08-23 00:00:00.000",
+ "requiredDate": "1996-09-20 00:00:00.000",
+ "shippedDate": "1996-09-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 7.45,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 3,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10289,
+ "customerID": "BSBEV",
+ "employeeID": 7,
+ "orderDate": "1996-08-26 00:00:00.000",
+ "requiredDate": "1996-09-23 00:00:00.000",
+ "shippedDate": "1996-08-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 22.77,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10290,
+ "customerID": "COMMI",
+ "employeeID": 8,
+ "orderDate": "1996-08-27 00:00:00.000",
+ "requiredDate": "1996-09-24 00:00:00.000",
+ "shippedDate": "1996-09-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 79.7,
+ "shipName": "Comércio Mineiro",
+ "shipAddress": {
+ "street": "Av. dos Lusíadas 23",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05432-043",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 5,
+ "unitPrice": 17,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10291,
+ "customerID": "QUEDE",
+ "employeeID": 6,
+ "orderDate": "1996-08-27 00:00:00.000",
+ "requiredDate": "1996-09-24 00:00:00.000",
+ "shippedDate": "1996-09-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 6.4,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 24,
+ "discount": 0.1
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 2,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10296,
+ "customerID": "LILAS",
+ "employeeID": 6,
+ "orderDate": "1996-09-03 00:00:00.000",
+ "requiredDate": "1996-10-01 00:00:00.000",
+ "shippedDate": "1996-09-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.12,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10297,
+ "customerID": "BLONP",
+ "employeeID": 5,
+ "orderDate": "1996-09-04 00:00:00.000",
+ "requiredDate": "1996-10-16 00:00:00.000",
+ "shippedDate": "1996-09-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 5.74,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10298,
+ "customerID": "HUNGO",
+ "employeeID": 6,
+ "orderDate": "1996-09-05 00:00:00.000",
+ "requiredDate": "1996-10-03 00:00:00.000",
+ "shippedDate": "1996-09-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 168.22,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10299,
+ "customerID": "RICAR",
+ "employeeID": 4,
+ "orderDate": "1996-09-06 00:00:00.000",
+ "requiredDate": "1996-10-04 00:00:00.000",
+ "shippedDate": "1996-09-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 29.76,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10300,
+ "customerID": "MAGAA",
+ "employeeID": 2,
+ "orderDate": "1996-09-09 00:00:00.000",
+ "requiredDate": "1996-10-07 00:00:00.000",
+ "shippedDate": "1996-09-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 17.68,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 66,
+ "unitPrice": 13.6,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10301,
+ "customerID": "WANDK",
+ "employeeID": 8,
+ "orderDate": "1996-09-09 00:00:00.000",
+ "requiredDate": "1996-10-07 00:00:00.000",
+ "shippedDate": "1996-09-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 45.08,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10293,
+ "customerID": "TORTU",
+ "employeeID": 1,
+ "orderDate": "1996-08-29 00:00:00.000",
+ "requiredDate": "1996-09-26 00:00:00.000",
+ "shippedDate": "1996-09-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 21.18,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10294,
+ "customerID": "RATTC",
+ "employeeID": 4,
+ "orderDate": "1996-08-30 00:00:00.000",
+ "requiredDate": "1996-09-27 00:00:00.000",
+ "shippedDate": "1996-09-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 147.26,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10302,
+ "customerID": "SUPRD",
+ "employeeID": 4,
+ "orderDate": "1996-09-10 00:00:00.000",
+ "requiredDate": "1996-10-08 00:00:00.000",
+ "shippedDate": "1996-10-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 6.27,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10303,
+ "customerID": "GODOS",
+ "employeeID": 7,
+ "orderDate": "1996-09-11 00:00:00.000",
+ "requiredDate": "1996-10-09 00:00:00.000",
+ "shippedDate": "1996-09-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 107.83,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10304,
+ "customerID": "TORTU",
+ "employeeID": 1,
+ "orderDate": "1996-09-12 00:00:00.000",
+ "requiredDate": "1996-10-10 00:00:00.000",
+ "shippedDate": "1996-09-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 63.79,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10306,
+ "customerID": "ROMEY",
+ "employeeID": 1,
+ "orderDate": "1996-09-16 00:00:00.000",
+ "requiredDate": "1996-10-14 00:00:00.000",
+ "shippedDate": "1996-09-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7.56,
+ "shipName": "Romero y tomillo",
+ "shipAddress": {
+ "street": "Gran Vía 1",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28001,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10305,
+ "customerID": "OLDWO",
+ "employeeID": 8,
+ "orderDate": "1996-09-13 00:00:00.000",
+ "requiredDate": "1996-10-11 00:00:00.000",
+ "shippedDate": "1996-10-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 257.62,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 25,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10307,
+ "customerID": "LONEP",
+ "employeeID": 2,
+ "orderDate": "1996-09-17 00:00:00.000",
+ "requiredDate": "1996-10-15 00:00:00.000",
+ "shippedDate": "1996-09-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.56,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10308,
+ "customerID": "ANATR",
+ "employeeID": 7,
+ "orderDate": "1996-09-18 00:00:00.000",
+ "requiredDate": "1996-10-16 00:00:00.000",
+ "shippedDate": "1996-09-24 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.61,
+ "shipName": "Ana Trujillo Emparedados y helados",
+ "shipAddress": {
+ "street": "Avda. de la Constitución 2222",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5021,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 1,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10309,
+ "customerID": "HUNGO",
+ "employeeID": 3,
+ "orderDate": "1996-09-19 00:00:00.000",
+ "requiredDate": "1996-10-17 00:00:00.000",
+ "shippedDate": "1996-10-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 47.3,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 6,
+ "unitPrice": 20,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10310,
+ "customerID": "THEBI",
+ "employeeID": 8,
+ "orderDate": "1996-09-20 00:00:00.000",
+ "requiredDate": "1996-10-18 00:00:00.000",
+ "shippedDate": "1996-09-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 17.52,
+ "shipName": "The Big Cheese",
+ "shipAddress": {
+ "street": "89 Jefferson Way Suite 2",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97201,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10314,
+ "customerID": "RATTC",
+ "employeeID": 1,
+ "orderDate": "1996-09-25 00:00:00.000",
+ "requiredDate": "1996-10-23 00:00:00.000",
+ "shippedDate": "1996-10-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 74.16,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 25.6,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 58,
+ "unitPrice": 10.6,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 25,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10315,
+ "customerID": "ISLAT",
+ "employeeID": 4,
+ "orderDate": "1996-09-26 00:00:00.000",
+ "requiredDate": "1996-10-24 00:00:00.000",
+ "shippedDate": "1996-10-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 41.76,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10316,
+ "customerID": "RATTC",
+ "employeeID": 1,
+ "orderDate": "1996-09-27 00:00:00.000",
+ "requiredDate": "1996-10-25 00:00:00.000",
+ "shippedDate": "1996-10-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 150.15,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10311,
+ "customerID": "DUMON",
+ "employeeID": 1,
+ "orderDate": "1996-09-20 00:00:00.000",
+ "requiredDate": "1996-10-04 00:00:00.000",
+ "shippedDate": "1996-09-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 24.69,
+ "shipName": "Du monde entier",
+ "shipAddress": {
+ "street": "67 rue des Cinquante Otages",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10312,
+ "customerID": "WANDK",
+ "employeeID": 2,
+ "orderDate": "1996-09-23 00:00:00.000",
+ "requiredDate": "1996-10-21 00:00:00.000",
+ "shippedDate": "1996-10-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 40.26,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10319,
+ "customerID": "TORTU",
+ "employeeID": 7,
+ "orderDate": "1996-10-02 00:00:00.000",
+ "requiredDate": "1996-10-30 00:00:00.000",
+ "shippedDate": "1996-10-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 64.5,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10318,
+ "customerID": "ISLAT",
+ "employeeID": 8,
+ "orderDate": "1996-10-01 00:00:00.000",
+ "requiredDate": "1996-10-29 00:00:00.000",
+ "shippedDate": "1996-10-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.73,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10326,
+ "customerID": "BOLID",
+ "employeeID": 4,
+ "orderDate": "1996-10-10 00:00:00.000",
+ "requiredDate": "1996-11-07 00:00:00.000",
+ "shippedDate": "1996-10-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 77.92,
+ "shipName": "Bólido Comidas preparadas",
+ "shipAddress": {
+ "street": "C/ Araquil 67",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28023,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10323,
+ "customerID": "KOENE",
+ "employeeID": 4,
+ "orderDate": "1996-10-07 00:00:00.000",
+ "requiredDate": "1996-11-04 00:00:00.000",
+ "shippedDate": "1996-10-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.88,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 12.4,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10327,
+ "customerID": "FOLKO",
+ "employeeID": 2,
+ "orderDate": "1996-10-11 00:00:00.000",
+ "requiredDate": "1996-11-08 00:00:00.000",
+ "shippedDate": "1996-10-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 63.36,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 50,
+ "discount": 0.2
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 58,
+ "unitPrice": 10.6,
+ "quantity": 30,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10328,
+ "customerID": "FURIB",
+ "employeeID": 4,
+ "orderDate": "1996-10-14 00:00:00.000",
+ "requiredDate": "1996-11-11 00:00:00.000",
+ "shippedDate": "1996-10-17 00:00:00.000",
+ "shipVia": 3,
+ "freight": 87.03,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10330,
+ "customerID": "LILAS",
+ "employeeID": 3,
+ "orderDate": "1996-10-16 00:00:00.000",
+ "requiredDate": "1996-11-13 00:00:00.000",
+ "shippedDate": "1996-10-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.75,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 25,
+ "discount": 0.15
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 50,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10329,
+ "customerID": "SPLIR",
+ "employeeID": 4,
+ "orderDate": "1996-10-15 00:00:00.000",
+ "requiredDate": "1996-11-26 00:00:00.000",
+ "shippedDate": "1996-10-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 191.67,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 8,
+ "discount": 0.05
+ },
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 12,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10324,
+ "customerID": "SAVEA",
+ "employeeID": 9,
+ "orderDate": "1996-10-08 00:00:00.000",
+ "requiredDate": "1996-11-05 00:00:00.000",
+ "shippedDate": "1996-10-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 214.27,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 70,
+ "discount": 0.15
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 21,
+ "discount": 0.15
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 80,
+ "discount": 0.15
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 40,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10333,
+ "customerID": "WARTH",
+ "employeeID": 5,
+ "orderDate": "1996-10-18 00:00:00.000",
+ "requiredDate": "1996-11-15 00:00:00.000",
+ "shippedDate": "1996-10-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.59,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 40,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10334,
+ "customerID": "VICTE",
+ "employeeID": 8,
+ "orderDate": "1996-10-21 00:00:00.000",
+ "requiredDate": "1996-11-18 00:00:00.000",
+ "shippedDate": "1996-10-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.56,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10335,
+ "customerID": "HUNGO",
+ "employeeID": 7,
+ "orderDate": "1996-10-22 00:00:00.000",
+ "requiredDate": "1996-11-19 00:00:00.000",
+ "shippedDate": "1996-10-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 42.11,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 32,
+ "unitPrice": 25.6,
+ "quantity": 6,
+ "discount": 0.2
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 48,
+ "discount": 0.2
+ },
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 7,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10337,
+ "customerID": "FRANK",
+ "employeeID": 4,
+ "orderDate": "1996-10-24 00:00:00.000",
+ "requiredDate": "1996-11-21 00:00:00.000",
+ "shippedDate": "1996-10-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 108.26,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 37,
+ "unitPrice": 20.8,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10338,
+ "customerID": "OLDWO",
+ "employeeID": 4,
+ "orderDate": "1996-10-25 00:00:00.000",
+ "requiredDate": "1996-11-22 00:00:00.000",
+ "shippedDate": "1996-10-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 84.21,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10339,
+ "customerID": "MEREP",
+ "employeeID": 2,
+ "orderDate": "1996-10-28 00:00:00.000",
+ "requiredDate": "1996-11-25 00:00:00.000",
+ "shippedDate": "1996-11-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 15.66,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 70,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10340,
+ "customerID": "BONAP",
+ "employeeID": 1,
+ "orderDate": "1996-10-29 00:00:00.000",
+ "requiredDate": "1996-11-26 00:00:00.000",
+ "shippedDate": "1996-11-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 166.31,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10341,
+ "customerID": "SIMOB",
+ "employeeID": 7,
+ "orderDate": "1996-10-29 00:00:00.000",
+ "requiredDate": "1996-11-26 00:00:00.000",
+ "shippedDate": "1996-11-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 26.78,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 9,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10342,
+ "customerID": "FRANK",
+ "employeeID": 4,
+ "orderDate": "1996-10-30 00:00:00.000",
+ "requiredDate": "1996-11-13 00:00:00.000",
+ "shippedDate": "1996-11-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 54.83,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 24,
+ "discount": 0.2
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 56,
+ "discount": 0.2
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10343,
+ "customerID": "LEHMS",
+ "employeeID": 4,
+ "orderDate": "1996-10-31 00:00:00.000",
+ "requiredDate": "1996-11-28 00:00:00.000",
+ "shippedDate": "1996-11-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 110.37,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 4,
+ "discount": 0.05
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10344,
+ "customerID": "WHITC",
+ "employeeID": 4,
+ "orderDate": "1996-11-01 00:00:00.000",
+ "requiredDate": "1996-11-29 00:00:00.000",
+ "shippedDate": "1996-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 23.29,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 8,
+ "unitPrice": 32,
+ "quantity": 70,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10345,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1996-11-04 00:00:00.000",
+ "requiredDate": "1996-12-02 00:00:00.000",
+ "shippedDate": "1996-11-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 249.06,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 32,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 80,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10346,
+ "customerID": "RATTC",
+ "employeeID": 3,
+ "orderDate": "1996-11-05 00:00:00.000",
+ "requiredDate": "1996-12-17 00:00:00.000",
+ "shippedDate": "1996-11-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 142.08,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 36,
+ "discount": 0.1
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10347,
+ "customerID": "FAMIA",
+ "employeeID": 4,
+ "orderDate": "1996-11-06 00:00:00.000",
+ "requiredDate": "1996-12-04 00:00:00.000",
+ "shippedDate": "1996-11-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.1,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 50,
+ "discount": 0.15
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 6,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10348,
+ "customerID": "WANDK",
+ "employeeID": 4,
+ "orderDate": "1996-11-07 00:00:00.000",
+ "requiredDate": "1996-12-05 00:00:00.000",
+ "shippedDate": "1996-11-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.78,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10325,
+ "customerID": "KOENE",
+ "employeeID": 1,
+ "orderDate": "1996-10-09 00:00:00.000",
+ "requiredDate": "1996-10-23 00:00:00.000",
+ "shippedDate": "1996-10-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 64.86,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 6,
+ "unitPrice": 20,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10350,
+ "customerID": "LAMAI",
+ "employeeID": 6,
+ "orderDate": "1996-11-11 00:00:00.000",
+ "requiredDate": "1996-12-09 00:00:00.000",
+ "shippedDate": "1996-12-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 64.19,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 50,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 18,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10332,
+ "customerID": "MEREP",
+ "employeeID": 3,
+ "orderDate": "1996-10-17 00:00:00.000",
+ "requiredDate": "1996-11-28 00:00:00.000",
+ "shippedDate": "1996-10-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 52.84,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 47,
+ "unitPrice": 7.6,
+ "quantity": 16,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10351,
+ "customerID": "ERNSH",
+ "employeeID": 1,
+ "orderDate": "1996-11-11 00:00:00.000",
+ "requiredDate": "1996-12-09 00:00:00.000",
+ "shippedDate": "1996-11-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 162.33,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 13,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 77,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10355,
+ "customerID": "AROUT",
+ "employeeID": 6,
+ "orderDate": "1996-11-15 00:00:00.000",
+ "requiredDate": "1996-12-13 00:00:00.000",
+ "shippedDate": "1996-11-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 41.95,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10356,
+ "customerID": "WANDK",
+ "employeeID": 6,
+ "orderDate": "1996-11-18 00:00:00.000",
+ "requiredDate": "1996-12-16 00:00:00.000",
+ "shippedDate": "1996-11-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 36.71,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10357,
+ "customerID": "LILAS",
+ "employeeID": 1,
+ "orderDate": "1996-11-19 00:00:00.000",
+ "requiredDate": "1996-12-17 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 3,
+ "freight": 34.88,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 8,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10358,
+ "customerID": "LAMAI",
+ "employeeID": 5,
+ "orderDate": "1996-11-20 00:00:00.000",
+ "requiredDate": "1996-12-18 00:00:00.000",
+ "shippedDate": "1996-11-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 19.64,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10359,
+ "customerID": "SEVES",
+ "employeeID": 5,
+ "orderDate": "1996-11-21 00:00:00.000",
+ "requiredDate": "1996-12-19 00:00:00.000",
+ "shippedDate": "1996-11-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 288.43,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 56,
+ "discount": 0.05
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 70,
+ "discount": 0.05
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 80,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10360,
+ "customerID": "BLONP",
+ "employeeID": 4,
+ "orderDate": "1996-11-22 00:00:00.000",
+ "requiredDate": "1996-12-20 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 3,
+ "freight": 131.7,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10361,
+ "customerID": "QUICK",
+ "employeeID": 1,
+ "orderDate": "1996-11-22 00:00:00.000",
+ "requiredDate": "1996-12-20 00:00:00.000",
+ "shippedDate": "1996-12-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 183.17,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 54,
+ "discount": 0.1
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 55,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10353,
+ "customerID": "PICCO",
+ "employeeID": 7,
+ "orderDate": "1996-11-13 00:00:00.000",
+ "requiredDate": "1996-12-11 00:00:00.000",
+ "shippedDate": "1996-11-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 360.63,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10363,
+ "customerID": "DRACD",
+ "employeeID": 4,
+ "orderDate": "1996-11-26 00:00:00.000",
+ "requiredDate": "1996-12-24 00:00:00.000",
+ "shippedDate": "1996-12-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 30.54,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10352,
+ "customerID": "FURIB",
+ "employeeID": 3,
+ "orderDate": "1996-11-12 00:00:00.000",
+ "requiredDate": "1996-11-26 00:00:00.000",
+ "shippedDate": "1996-11-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.3,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10364,
+ "customerID": "EASTC",
+ "employeeID": 1,
+ "orderDate": "1996-11-26 00:00:00.000",
+ "requiredDate": "1997-01-07 00:00:00.000",
+ "shippedDate": "1996-12-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 71.97,
+ "shipName": "Eastern Connection",
+ "shipAddress": {
+ "street": "35 King George",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX3 6FW",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10354,
+ "customerID": "PERIC",
+ "employeeID": 8,
+ "orderDate": "1996-11-14 00:00:00.000",
+ "requiredDate": "1996-12-12 00:00:00.000",
+ "shippedDate": "1996-11-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 53.8,
+ "shipName": "Pericles Comidas clásicas",
+ "shipAddress": {
+ "street": "Calle Dr. Jorge Cash 321",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10362,
+ "customerID": "BONAP",
+ "employeeID": 3,
+ "orderDate": "1996-11-25 00:00:00.000",
+ "requiredDate": "1996-12-23 00:00:00.000",
+ "shippedDate": "1996-11-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 96.04,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10366,
+ "customerID": "GALED",
+ "employeeID": 8,
+ "orderDate": "1996-11-28 00:00:00.000",
+ "requiredDate": "1997-01-09 00:00:00.000",
+ "shippedDate": "1996-12-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 10.14,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10367,
+ "customerID": "VAFFE",
+ "employeeID": 7,
+ "orderDate": "1996-11-28 00:00:00.000",
+ "requiredDate": "1996-12-26 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.55,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10372,
+ "customerID": "QUEEN",
+ "employeeID": 5,
+ "orderDate": "1996-12-04 00:00:00.000",
+ "requiredDate": "1997-01-01 00:00:00.000",
+ "shippedDate": "1996-12-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 890.78,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 70,
+ "discount": 0.25
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 42,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10373,
+ "customerID": "HUNGO",
+ "employeeID": 4,
+ "orderDate": "1996-12-05 00:00:00.000",
+ "requiredDate": "1997-01-02 00:00:00.000",
+ "shippedDate": "1996-12-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 124.12,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 58,
+ "unitPrice": 10.6,
+ "quantity": 80,
+ "discount": 0.2
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10374,
+ "customerID": "WOLZA",
+ "employeeID": 1,
+ "orderDate": "1996-12-05 00:00:00.000",
+ "requiredDate": "1997-01-02 00:00:00.000",
+ "shippedDate": "1996-12-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.94,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 58,
+ "unitPrice": 10.6,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10375,
+ "customerID": "HUNGC",
+ "employeeID": 3,
+ "orderDate": "1996-12-06 00:00:00.000",
+ "requiredDate": "1997-01-03 00:00:00.000",
+ "shippedDate": "1996-12-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 20.12,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10368,
+ "customerID": "ERNSH",
+ "employeeID": 2,
+ "orderDate": "1996-11-29 00:00:00.000",
+ "requiredDate": "1996-12-27 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 101.95,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 5,
+ "discount": 0.1
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 13,
+ "discount": 0.1
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 35,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10369,
+ "customerID": "SPLIR",
+ "employeeID": 8,
+ "orderDate": "1996-12-02 00:00:00.000",
+ "requiredDate": "1996-12-30 00:00:00.000",
+ "shippedDate": "1996-12-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 195.68,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 18,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10379,
+ "customerID": "QUEDE",
+ "employeeID": 2,
+ "orderDate": "1996-12-11 00:00:00.000",
+ "requiredDate": "1997-01-08 00:00:00.000",
+ "shippedDate": "1996-12-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 45.03,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 16,
+ "discount": 0.1
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10370,
+ "customerID": "CHOPS",
+ "employeeID": 6,
+ "orderDate": "1996-12-03 00:00:00.000",
+ "requiredDate": "1996-12-31 00:00:00.000",
+ "shippedDate": "1996-12-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.17,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10380,
+ "customerID": "HUNGO",
+ "employeeID": 8,
+ "orderDate": "1996-12-12 00:00:00.000",
+ "requiredDate": "1997-01-09 00:00:00.000",
+ "shippedDate": "1997-01-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 35.03,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 6,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10377,
+ "customerID": "SEVES",
+ "employeeID": 1,
+ "orderDate": "1996-12-09 00:00:00.000",
+ "requiredDate": "1997-01-06 00:00:00.000",
+ "shippedDate": "1996-12-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 22.21,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10384,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1996-12-16 00:00:00.000",
+ "requiredDate": "1997-01-13 00:00:00.000",
+ "shippedDate": "1996-12-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 168.64,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10385,
+ "customerID": "SPLIR",
+ "employeeID": 1,
+ "orderDate": "1996-12-17 00:00:00.000",
+ "requiredDate": "1997-01-14 00:00:00.000",
+ "shippedDate": "1996-12-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 30.96,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 24,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 8,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10386,
+ "customerID": "FAMIA",
+ "employeeID": 9,
+ "orderDate": "1996-12-18 00:00:00.000",
+ "requiredDate": "1997-01-01 00:00:00.000",
+ "shippedDate": "1996-12-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.99,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10387,
+ "customerID": "SANTG",
+ "employeeID": 1,
+ "orderDate": "1996-12-18 00:00:00.000",
+ "requiredDate": "1997-01-15 00:00:00.000",
+ "shippedDate": "1996-12-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 93.63,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10388,
+ "customerID": "SEVES",
+ "employeeID": 2,
+ "orderDate": "1996-12-19 00:00:00.000",
+ "requiredDate": "1997-01-16 00:00:00.000",
+ "shippedDate": "1996-12-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 34.86,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 7.6,
+ "quantity": 15,
+ "discount": 0.2
+ },
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10389,
+ "customerID": "BOTTM",
+ "employeeID": 4,
+ "orderDate": "1996-12-20 00:00:00.000",
+ "requiredDate": "1997-01-17 00:00:00.000",
+ "shippedDate": "1996-12-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 47.42,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10382,
+ "customerID": "ERNSH",
+ "employeeID": 4,
+ "orderDate": "1996-12-13 00:00:00.000",
+ "requiredDate": "1997-01-10 00:00:00.000",
+ "shippedDate": "1996-12-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 94.77,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 5,
+ "unitPrice": 17,
+ "quantity": 32,
+ "discount": 0
+ },
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10381,
+ "customerID": "LILAS",
+ "employeeID": 3,
+ "orderDate": "1996-12-12 00:00:00.000",
+ "requiredDate": "1997-01-09 00:00:00.000",
+ "shippedDate": "1996-12-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7.99,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10383,
+ "customerID": "AROUT",
+ "employeeID": 8,
+ "orderDate": "1996-12-16 00:00:00.000",
+ "requiredDate": "1997-01-13 00:00:00.000",
+ "shippedDate": "1996-12-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 34.24,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 50,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10390,
+ "customerID": "ERNSH",
+ "employeeID": 6,
+ "orderDate": "1996-12-23 00:00:00.000",
+ "requiredDate": "1997-01-20 00:00:00.000",
+ "shippedDate": "1996-12-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 126.38,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0.1
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 24,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10396,
+ "customerID": "FRANK",
+ "employeeID": 1,
+ "orderDate": "1996-12-27 00:00:00.000",
+ "requiredDate": "1997-01-10 00:00:00.000",
+ "shippedDate": "1997-01-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 135.35,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10397,
+ "customerID": "PRINI",
+ "employeeID": 5,
+ "orderDate": "1996-12-27 00:00:00.000",
+ "requiredDate": "1997-01-24 00:00:00.000",
+ "shippedDate": "1997-01-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 60.26,
+ "shipName": "Princesa Isabel Vinhos",
+ "shipAddress": {
+ "street": "Estrada da saúde n. 58",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1756,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 10,
+ "discount": 0.15
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 18,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10398,
+ "customerID": "SAVEA",
+ "employeeID": 2,
+ "orderDate": "1996-12-30 00:00:00.000",
+ "requiredDate": "1997-01-27 00:00:00.000",
+ "shippedDate": "1997-01-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 89.16,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 120,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10399,
+ "customerID": "VAFFE",
+ "employeeID": 8,
+ "orderDate": "1996-12-31 00:00:00.000",
+ "requiredDate": "1997-01-14 00:00:00.000",
+ "shippedDate": "1997-01-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 27.36,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10400,
+ "customerID": "EASTC",
+ "employeeID": 1,
+ "orderDate": "1997-01-01 00:00:00.000",
+ "requiredDate": "1997-01-29 00:00:00.000",
+ "shippedDate": "1997-01-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 83.93,
+ "shipName": "Eastern Connection",
+ "shipAddress": {
+ "street": "35 King George",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX3 6FW",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10401,
+ "customerID": "RATTC",
+ "employeeID": 1,
+ "orderDate": "1997-01-01 00:00:00.000",
+ "requiredDate": "1997-01-29 00:00:00.000",
+ "shippedDate": "1997-01-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.51,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10394,
+ "customerID": "HUNGC",
+ "employeeID": 1,
+ "orderDate": "1996-12-25 00:00:00.000",
+ "requiredDate": "1997-01-22 00:00:00.000",
+ "shippedDate": "1997-01-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 30.34,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10402,
+ "customerID": "ERNSH",
+ "employeeID": 8,
+ "orderDate": "1997-01-02 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-01-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 67.88,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 65,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10393,
+ "customerID": "SAVEA",
+ "employeeID": 1,
+ "orderDate": "1996-12-25 00:00:00.000",
+ "requiredDate": "1997-01-22 00:00:00.000",
+ "shippedDate": "1997-01-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 126.56,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 70,
+ "discount": 0.25
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 32,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 7,
+ "discount": 0.25
+ },
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 25,
+ "discount": 0.25
+ },
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 42,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10395,
+ "customerID": "HILAA",
+ "employeeID": 6,
+ "orderDate": "1996-12-26 00:00:00.000",
+ "requiredDate": "1997-01-23 00:00:00.000",
+ "shippedDate": "1997-01-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 184.41,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 28,
+ "discount": 0.1
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 70,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10406,
+ "customerID": "QUEEN",
+ "employeeID": 7,
+ "orderDate": "1997-01-07 00:00:00.000",
+ "requiredDate": "1997-02-18 00:00:00.000",
+ "shippedDate": "1997-01-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 108.04,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 42,
+ "discount": 0.1
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 5,
+ "discount": 0.1
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 2,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10407,
+ "customerID": "OTTIK",
+ "employeeID": 2,
+ "orderDate": "1997-01-07 00:00:00.000",
+ "requiredDate": "1997-02-04 00:00:00.000",
+ "shippedDate": "1997-01-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 91.48,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10408,
+ "customerID": "FOLIG",
+ "employeeID": 8,
+ "orderDate": "1997-01-08 00:00:00.000",
+ "requiredDate": "1997-02-05 00:00:00.000",
+ "shippedDate": "1997-01-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.26,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 37,
+ "unitPrice": 20.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10409,
+ "customerID": "OCEAN",
+ "employeeID": 3,
+ "orderDate": "1997-01-09 00:00:00.000",
+ "requiredDate": "1997-02-06 00:00:00.000",
+ "shippedDate": "1997-01-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 29.83,
+ "shipName": "Océano Atlántico Ltda.",
+ "shipAddress": {
+ "street": "Ing. Gustavo Moncada 8585 Piso 20-A",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10410,
+ "customerID": "BOTTM",
+ "employeeID": 3,
+ "orderDate": "1997-01-10 00:00:00.000",
+ "requiredDate": "1997-02-07 00:00:00.000",
+ "shippedDate": "1997-01-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 2.4,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 49,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10411,
+ "customerID": "BOTTM",
+ "employeeID": 9,
+ "orderDate": "1997-01-10 00:00:00.000",
+ "requiredDate": "1997-02-07 00:00:00.000",
+ "shippedDate": "1997-01-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 23.65,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 9,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10404,
+ "customerID": "MAGAA",
+ "employeeID": 2,
+ "orderDate": "1997-01-03 00:00:00.000",
+ "requiredDate": "1997-01-31 00:00:00.000",
+ "shippedDate": "1997-01-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 155.97,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 40,
+ "discount": 0.05
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 30,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10413,
+ "customerID": "LAMAI",
+ "employeeID": 3,
+ "orderDate": "1997-01-14 00:00:00.000",
+ "requiredDate": "1997-02-11 00:00:00.000",
+ "shippedDate": "1997-01-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 95.66,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10403,
+ "customerID": "ERNSH",
+ "employeeID": 4,
+ "orderDate": "1997-01-03 00:00:00.000",
+ "requiredDate": "1997-01-31 00:00:00.000",
+ "shippedDate": "1997-01-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 73.79,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 21,
+ "discount": 0.15
+ },
+ {
+ "productID": 48,
+ "unitPrice": 10.2,
+ "quantity": 70,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10414,
+ "customerID": "FAMIA",
+ "employeeID": 2,
+ "orderDate": "1997-01-14 00:00:00.000",
+ "requiredDate": "1997-02-11 00:00:00.000",
+ "shippedDate": "1997-01-17 00:00:00.000",
+ "shipVia": 3,
+ "freight": 21.48,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 18,
+ "discount": 0.05
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10415,
+ "customerID": "HUNGC",
+ "employeeID": 3,
+ "orderDate": "1997-01-15 00:00:00.000",
+ "requiredDate": "1997-02-12 00:00:00.000",
+ "shippedDate": "1997-01-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.2,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10419,
+ "customerID": "RICSU",
+ "employeeID": 4,
+ "orderDate": "1997-01-20 00:00:00.000",
+ "requiredDate": "1997-02-17 00:00:00.000",
+ "shippedDate": "1997-01-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 137.35,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10420,
+ "customerID": "WELLI",
+ "employeeID": 3,
+ "orderDate": "1997-01-21 00:00:00.000",
+ "requiredDate": "1997-02-18 00:00:00.000",
+ "shippedDate": "1997-01-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 44.12,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 77.6,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 2,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 73,
+ "unitPrice": 12,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10421,
+ "customerID": "QUEDE",
+ "employeeID": 8,
+ "orderDate": "1997-01-21 00:00:00.000",
+ "requiredDate": "1997-03-04 00:00:00.000",
+ "shippedDate": "1997-01-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 99.23,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 4,
+ "discount": 0.15
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 10,
+ "discount": 0.15
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10423,
+ "customerID": "GOURL",
+ "employeeID": 6,
+ "orderDate": "1997-01-23 00:00:00.000",
+ "requiredDate": "1997-02-06 00:00:00.000",
+ "shippedDate": "1997-02-24 00:00:00.000",
+ "shipVia": 3,
+ "freight": 24.5,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10424,
+ "customerID": "MEREP",
+ "employeeID": 7,
+ "orderDate": "1997-01-23 00:00:00.000",
+ "requiredDate": "1997-02-20 00:00:00.000",
+ "shippedDate": "1997-01-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 370.61,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 49,
+ "discount": 0.2
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 60,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10418,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1997-01-17 00:00:00.000",
+ "requiredDate": "1997-02-14 00:00:00.000",
+ "shippedDate": "1997-01-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 17.55,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 7.6,
+ "quantity": 55,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 22.8,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10417,
+ "customerID": "SIMOB",
+ "employeeID": 4,
+ "orderDate": "1997-01-16 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-01-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 70.29,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 2,
+ "discount": 0.25
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 36,
+ "discount": 0.25
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10416,
+ "customerID": "WARTH",
+ "employeeID": 8,
+ "orderDate": "1997-01-16 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-01-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 22.72,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10425,
+ "customerID": "LAMAI",
+ "employeeID": 6,
+ "orderDate": "1997-01-24 00:00:00.000",
+ "requiredDate": "1997-02-21 00:00:00.000",
+ "shippedDate": "1997-02-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.93,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 10,
+ "discount": 0.25
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10429,
+ "customerID": "HUNGO",
+ "employeeID": 3,
+ "orderDate": "1997-01-29 00:00:00.000",
+ "requiredDate": "1997-03-12 00:00:00.000",
+ "shippedDate": "1997-02-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 56.63,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 50,
+ "unitPrice": 13,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10430,
+ "customerID": "ERNSH",
+ "employeeID": 4,
+ "orderDate": "1997-01-30 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-02-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 458.78,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 45,
+ "discount": 0.2
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 70,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10431,
+ "customerID": "BOTTM",
+ "employeeID": 4,
+ "orderDate": "1997-01-30 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-02-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 44.17,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 47,
+ "unitPrice": 7.6,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10432,
+ "customerID": "SPLIR",
+ "employeeID": 3,
+ "orderDate": "1997-01-31 00:00:00.000",
+ "requiredDate": "1997-02-14 00:00:00.000",
+ "shippedDate": "1997-02-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.34,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10434,
+ "customerID": "FOLKO",
+ "employeeID": 3,
+ "orderDate": "1997-02-03 00:00:00.000",
+ "requiredDate": "1997-03-03 00:00:00.000",
+ "shippedDate": "1997-02-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 17.92,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 18,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10436,
+ "customerID": "BLONP",
+ "employeeID": 3,
+ "orderDate": "1997-02-05 00:00:00.000",
+ "requiredDate": "1997-03-05 00:00:00.000",
+ "shippedDate": "1997-02-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 156.66,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 24,
+ "discount": 0.1
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 30,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10435,
+ "customerID": "CONSH",
+ "employeeID": 8,
+ "orderDate": "1997-02-04 00:00:00.000",
+ "requiredDate": "1997-03-18 00:00:00.000",
+ "shippedDate": "1997-02-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 9.21,
+ "shipName": "Consolidated Holdings",
+ "shipAddress": {
+ "street": "Berkeley Gardens 12 Brewery",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX1 6LT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 16.8,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10426,
+ "customerID": "GALED",
+ "employeeID": 4,
+ "orderDate": "1997-01-27 00:00:00.000",
+ "requiredDate": "1997-02-24 00:00:00.000",
+ "shippedDate": "1997-02-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 18.69,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10442,
+ "customerID": "ERNSH",
+ "employeeID": 3,
+ "orderDate": "1997-02-11 00:00:00.000",
+ "requiredDate": "1997-03-11 00:00:00.000",
+ "shippedDate": "1997-02-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 47.94,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 80,
+ "discount": 0
+ },
+ {
+ "productID": 66,
+ "unitPrice": 13.6,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10443,
+ "customerID": "REGGC",
+ "employeeID": 8,
+ "orderDate": "1997-02-12 00:00:00.000",
+ "requiredDate": "1997-03-12 00:00:00.000",
+ "shippedDate": "1997-02-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 13.95,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 6,
+ "discount": 0.2
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10444,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1997-02-12 00:00:00.000",
+ "requiredDate": "1997-03-12 00:00:00.000",
+ "shippedDate": "1997-02-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.5,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10445,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1997-02-13 00:00:00.000",
+ "requiredDate": "1997-03-13 00:00:00.000",
+ "shippedDate": "1997-02-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 9.3,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10446,
+ "customerID": "TOMSP",
+ "employeeID": 6,
+ "orderDate": "1997-02-14 00:00:00.000",
+ "requiredDate": "1997-03-14 00:00:00.000",
+ "shippedDate": "1997-02-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 14.68,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 3,
+ "discount": 0.1
+ },
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 12,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10440,
+ "customerID": "SAVEA",
+ "employeeID": 4,
+ "orderDate": "1997-02-10 00:00:00.000",
+ "requiredDate": "1997-03-10 00:00:00.000",
+ "shippedDate": "1997-02-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 86.53,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 45,
+ "discount": 0.15
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 49,
+ "discount": 0.15
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 24,
+ "discount": 0.15
+ },
+ {
+ "productID": 61,
+ "unitPrice": 22.8,
+ "quantity": 90,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10439,
+ "customerID": "MEREP",
+ "employeeID": 6,
+ "orderDate": "1997-02-07 00:00:00.000",
+ "requiredDate": "1997-03-07 00:00:00.000",
+ "shippedDate": "1997-02-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.07,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 30.4,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10448,
+ "customerID": "RANCH",
+ "employeeID": 4,
+ "orderDate": "1997-02-17 00:00:00.000",
+ "requiredDate": "1997-03-17 00:00:00.000",
+ "shippedDate": "1997-02-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 38.82,
+ "shipName": "Rancho grande",
+ "shipAddress": {
+ "street": "Av. del Libertador 900",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10438,
+ "customerID": "TOMSP",
+ "employeeID": 3,
+ "orderDate": "1997-02-06 00:00:00.000",
+ "requiredDate": "1997-03-06 00:00:00.000",
+ "shippedDate": "1997-02-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.24,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 15,
+ "discount": 0.2
+ },
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 15,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10447,
+ "customerID": "RICAR",
+ "employeeID": 4,
+ "orderDate": "1997-02-14 00:00:00.000",
+ "requiredDate": "1997-03-14 00:00:00.000",
+ "shippedDate": "1997-03-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 68.66,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10452,
+ "customerID": "SAVEA",
+ "employeeID": 8,
+ "orderDate": "1997-02-20 00:00:00.000",
+ "requiredDate": "1997-03-20 00:00:00.000",
+ "shippedDate": "1997-02-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 140.26,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 100,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10453,
+ "customerID": "AROUT",
+ "employeeID": 1,
+ "orderDate": "1997-02-21 00:00:00.000",
+ "requiredDate": "1997-03-21 00:00:00.000",
+ "shippedDate": "1997-02-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.36,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 48,
+ "unitPrice": 10.2,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 25,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10454,
+ "customerID": "LAMAI",
+ "employeeID": 4,
+ "orderDate": "1997-02-21 00:00:00.000",
+ "requiredDate": "1997-03-21 00:00:00.000",
+ "shippedDate": "1997-02-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 2.74,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10455,
+ "customerID": "WARTH",
+ "employeeID": 8,
+ "orderDate": "1997-02-24 00:00:00.000",
+ "requiredDate": "1997-04-07 00:00:00.000",
+ "shippedDate": "1997-03-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 180.45,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 22.8,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10456,
+ "customerID": "KOENE",
+ "employeeID": 8,
+ "orderDate": "1997-02-25 00:00:00.000",
+ "requiredDate": "1997-04-08 00:00:00.000",
+ "shippedDate": "1997-02-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.12,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 21,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10450,
+ "customerID": "VICTE",
+ "employeeID": 8,
+ "orderDate": "1997-02-19 00:00:00.000",
+ "requiredDate": "1997-03-19 00:00:00.000",
+ "shippedDate": "1997-03-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.23,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 6,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10451,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1997-02-19 00:00:00.000",
+ "requiredDate": "1997-03-05 00:00:00.000",
+ "shippedDate": "1997-03-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 189.09,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 120,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 35,
+ "discount": 0.1
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 28,
+ "discount": 0.1
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 55,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10449,
+ "customerID": "BLONP",
+ "employeeID": 3,
+ "orderDate": "1997-02-18 00:00:00.000",
+ "requiredDate": "1997-03-18 00:00:00.000",
+ "shippedDate": "1997-02-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 53.3,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10461,
+ "customerID": "LILAS",
+ "employeeID": 1,
+ "orderDate": "1997-02-28 00:00:00.000",
+ "requiredDate": "1997-03-28 00:00:00.000",
+ "shippedDate": "1997-03-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 148.61,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 28,
+ "discount": 0.25
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 60,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10462,
+ "customerID": "CONSH",
+ "employeeID": 2,
+ "orderDate": "1997-03-03 00:00:00.000",
+ "requiredDate": "1997-03-31 00:00:00.000",
+ "shippedDate": "1997-03-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 6.17,
+ "shipName": "Consolidated Holdings",
+ "shipAddress": {
+ "street": "Berkeley Gardens 12 Brewery",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX1 6LT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 1,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10463,
+ "customerID": "SUPRD",
+ "employeeID": 5,
+ "orderDate": "1997-03-04 00:00:00.000",
+ "requiredDate": "1997-04-01 00:00:00.000",
+ "shippedDate": "1997-03-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 14.78,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10464,
+ "customerID": "FURIB",
+ "employeeID": 4,
+ "orderDate": "1997-03-04 00:00:00.000",
+ "requiredDate": "1997-04-01 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 89,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 16,
+ "discount": 0.2
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10465,
+ "customerID": "VAFFE",
+ "employeeID": 1,
+ "orderDate": "1997-03-05 00:00:00.000",
+ "requiredDate": "1997-04-02 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 145.04,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 45,
+ "unitPrice": 7.6,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 50,
+ "unitPrice": 13,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10466,
+ "customerID": "COMMI",
+ "employeeID": 4,
+ "orderDate": "1997-03-06 00:00:00.000",
+ "requiredDate": "1997-04-03 00:00:00.000",
+ "shippedDate": "1997-03-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.93,
+ "shipName": "Comércio Mineiro",
+ "shipAddress": {
+ "street": "Av. dos Lusíadas 23",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05432-043",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10460,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1997-02-28 00:00:00.000",
+ "requiredDate": "1997-03-28 00:00:00.000",
+ "shippedDate": "1997-03-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.27,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 4,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10459,
+ "customerID": "VICTE",
+ "employeeID": 4,
+ "orderDate": "1997-02-27 00:00:00.000",
+ "requiredDate": "1997-03-27 00:00:00.000",
+ "shippedDate": "1997-02-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.09,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 24,
+ "quantity": 16,
+ "discount": 0.05
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10468,
+ "customerID": "KOENE",
+ "employeeID": 3,
+ "orderDate": "1997-03-07 00:00:00.000",
+ "requiredDate": "1997-04-04 00:00:00.000",
+ "shippedDate": "1997-03-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 44.12,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10469,
+ "customerID": "WHITC",
+ "employeeID": 1,
+ "orderDate": "1997-03-10 00:00:00.000",
+ "requiredDate": "1997-04-07 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 60.18,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 2,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10458,
+ "customerID": "SUPRD",
+ "employeeID": 7,
+ "orderDate": "1997-02-26 00:00:00.000",
+ "requiredDate": "1997-03-26 00:00:00.000",
+ "shippedDate": "1997-03-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 147.06,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10470,
+ "customerID": "BONAP",
+ "employeeID": 4,
+ "orderDate": "1997-03-11 00:00:00.000",
+ "requiredDate": "1997-04-08 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 64.56,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10467,
+ "customerID": "MAGAA",
+ "employeeID": 8,
+ "orderDate": "1997-03-06 00:00:00.000",
+ "requiredDate": "1997-04-03 00:00:00.000",
+ "shippedDate": "1997-03-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.93,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10474,
+ "customerID": "PERIC",
+ "employeeID": 5,
+ "orderDate": "1997-03-13 00:00:00.000",
+ "requiredDate": "1997-04-10 00:00:00.000",
+ "shippedDate": "1997-03-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 83.49,
+ "shipName": "Pericles Comidas clásicas",
+ "shipAddress": {
+ "street": "Calle Dr. Jorge Cash 321",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10475,
+ "customerID": "SUPRD",
+ "employeeID": 9,
+ "orderDate": "1997-03-14 00:00:00.000",
+ "requiredDate": "1997-04-11 00:00:00.000",
+ "shippedDate": "1997-04-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 68.52,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 66,
+ "unitPrice": 13.6,
+ "quantity": 60,
+ "discount": 0.15
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 42,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10476,
+ "customerID": "HILAA",
+ "employeeID": 8,
+ "orderDate": "1997-03-17 00:00:00.000",
+ "requiredDate": "1997-04-14 00:00:00.000",
+ "shippedDate": "1997-03-24 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.41,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 2,
+ "discount": 0.05
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10477,
+ "customerID": "PRINI",
+ "employeeID": 5,
+ "orderDate": "1997-03-17 00:00:00.000",
+ "requiredDate": "1997-04-14 00:00:00.000",
+ "shippedDate": "1997-03-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.02,
+ "shipName": "Princesa Isabel Vinhos",
+ "shipAddress": {
+ "street": "Estrada da saúde n. 58",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1756,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10479,
+ "customerID": "RATTC",
+ "employeeID": 3,
+ "orderDate": "1997-03-19 00:00:00.000",
+ "requiredDate": "1997-04-16 00:00:00.000",
+ "shippedDate": "1997-03-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 708.95,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10471,
+ "customerID": "BSBEV",
+ "employeeID": 2,
+ "orderDate": "1997-03-11 00:00:00.000",
+ "requiredDate": "1997-04-08 00:00:00.000",
+ "shippedDate": "1997-03-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 45.59,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 24,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10472,
+ "customerID": "SEVES",
+ "employeeID": 8,
+ "orderDate": "1997-03-12 00:00:00.000",
+ "requiredDate": "1997-04-09 00:00:00.000",
+ "shippedDate": "1997-03-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.2,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 80,
+ "discount": 0.05
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10481,
+ "customerID": "RICAR",
+ "employeeID": 8,
+ "orderDate": "1997-03-20 00:00:00.000",
+ "requiredDate": "1997-04-17 00:00:00.000",
+ "shippedDate": "1997-03-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 64.33,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10473,
+ "customerID": "ISLAT",
+ "employeeID": 1,
+ "orderDate": "1997-03-13 00:00:00.000",
+ "requiredDate": "1997-03-27 00:00:00.000",
+ "shippedDate": "1997-03-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 16.37,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10484,
+ "customerID": "BSBEV",
+ "employeeID": 3,
+ "orderDate": "1997-03-24 00:00:00.000",
+ "requiredDate": "1997-04-21 00:00:00.000",
+ "shippedDate": "1997-04-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 6.88,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10485,
+ "customerID": "LINOD",
+ "employeeID": 4,
+ "orderDate": "1997-03-25 00:00:00.000",
+ "requiredDate": "1997-04-08 00:00:00.000",
+ "shippedDate": "1997-03-31 00:00:00.000",
+ "shipVia": 2,
+ "freight": 64.45,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 3,
+ "unitPrice": 8,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 60,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10486,
+ "customerID": "HILAA",
+ "employeeID": 1,
+ "orderDate": "1997-03-26 00:00:00.000",
+ "requiredDate": "1997-04-23 00:00:00.000",
+ "shippedDate": "1997-04-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 30.53,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10487,
+ "customerID": "QUEEN",
+ "employeeID": 2,
+ "orderDate": "1997-03-26 00:00:00.000",
+ "requiredDate": "1997-04-23 00:00:00.000",
+ "shippedDate": "1997-03-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 71.07,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 24,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10488,
+ "customerID": "FRANK",
+ "employeeID": 8,
+ "orderDate": "1997-03-27 00:00:00.000",
+ "requiredDate": "1997-04-24 00:00:00.000",
+ "shippedDate": "1997-04-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.93,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 12,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10489,
+ "customerID": "PICCO",
+ "employeeID": 6,
+ "orderDate": "1997-03-28 00:00:00.000",
+ "requiredDate": "1997-04-25 00:00:00.000",
+ "shippedDate": "1997-04-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 5.29,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10483,
+ "customerID": "WHITC",
+ "employeeID": 7,
+ "orderDate": "1997-03-24 00:00:00.000",
+ "requiredDate": "1997-04-21 00:00:00.000",
+ "shippedDate": "1997-04-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 15.28,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 35,
+ "discount": 0.05
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 30,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10491,
+ "customerID": "FURIB",
+ "employeeID": 8,
+ "orderDate": "1997-03-31 00:00:00.000",
+ "requiredDate": "1997-04-28 00:00:00.000",
+ "shippedDate": "1997-04-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 16.96,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 7,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10480,
+ "customerID": "FOLIG",
+ "employeeID": 6,
+ "orderDate": "1997-03-20 00:00:00.000",
+ "requiredDate": "1997-04-17 00:00:00.000",
+ "shippedDate": "1997-03-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.35,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 7.6,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10490,
+ "customerID": "HILAA",
+ "employeeID": 7,
+ "orderDate": "1997-03-31 00:00:00.000",
+ "requiredDate": "1997-04-28 00:00:00.000",
+ "shippedDate": "1997-04-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 210.19,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 36,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10492,
+ "customerID": "BOTTM",
+ "employeeID": 3,
+ "orderDate": "1997-04-01 00:00:00.000",
+ "requiredDate": "1997-04-29 00:00:00.000",
+ "shippedDate": "1997-04-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 62.89,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10493,
+ "customerID": "LAMAI",
+ "employeeID": 4,
+ "orderDate": "1997-04-02 00:00:00.000",
+ "requiredDate": "1997-04-30 00:00:00.000",
+ "shippedDate": "1997-04-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 10.64,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 66,
+ "unitPrice": 13.6,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10498,
+ "customerID": "HILAA",
+ "employeeID": 8,
+ "orderDate": "1997-04-07 00:00:00.000",
+ "requiredDate": "1997-05-05 00:00:00.000",
+ "shippedDate": "1997-04-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 29.75,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10499,
+ "customerID": "LILAS",
+ "employeeID": 4,
+ "orderDate": "1997-04-08 00:00:00.000",
+ "requiredDate": "1997-05-06 00:00:00.000",
+ "shippedDate": "1997-04-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 102.02,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10500,
+ "customerID": "LAMAI",
+ "employeeID": 6,
+ "orderDate": "1997-04-09 00:00:00.000",
+ "requiredDate": "1997-05-07 00:00:00.000",
+ "shippedDate": "1997-04-17 00:00:00.000",
+ "shipVia": 1,
+ "freight": 42.68,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 15.5,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 8,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10502,
+ "customerID": "PERIC",
+ "employeeID": 2,
+ "orderDate": "1997-04-10 00:00:00.000",
+ "requiredDate": "1997-05-08 00:00:00.000",
+ "shippedDate": "1997-04-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 69.32,
+ "shipName": "Pericles Comidas clásicas",
+ "shipAddress": {
+ "street": "Calle Dr. Jorge Cash 321",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10503,
+ "customerID": "HUNGO",
+ "employeeID": 6,
+ "orderDate": "1997-04-11 00:00:00.000",
+ "requiredDate": "1997-05-09 00:00:00.000",
+ "shippedDate": "1997-04-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 16.74,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10497,
+ "customerID": "LEHMS",
+ "employeeID": 7,
+ "orderDate": "1997-04-04 00:00:00.000",
+ "requiredDate": "1997-05-02 00:00:00.000",
+ "shippedDate": "1997-04-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 36.21,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10495,
+ "customerID": "LAUGB",
+ "employeeID": 3,
+ "orderDate": "1997-04-03 00:00:00.000",
+ "requiredDate": "1997-05-01 00:00:00.000",
+ "shippedDate": "1997-04-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.65,
+ "shipName": "Laughing Bacchus Wine Cellars",
+ "shipAddress": {
+ "street": "2319 Elm St.",
+ "city": "Vancouver",
+ "region": "BC",
+ "postalCode": "V3F 2K1",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10504,
+ "customerID": "WHITC",
+ "employeeID": 4,
+ "orderDate": "1997-04-11 00:00:00.000",
+ "requiredDate": "1997-05-09 00:00:00.000",
+ "shippedDate": "1997-04-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 59.13,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10508,
+ "customerID": "OTTIK",
+ "employeeID": 1,
+ "orderDate": "1997-04-16 00:00:00.000",
+ "requiredDate": "1997-05-14 00:00:00.000",
+ "shippedDate": "1997-05-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.99,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10510,
+ "customerID": "SAVEA",
+ "employeeID": 6,
+ "orderDate": "1997-04-18 00:00:00.000",
+ "requiredDate": "1997-05-16 00:00:00.000",
+ "shippedDate": "1997-04-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 367.63,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 36,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10511,
+ "customerID": "BONAP",
+ "employeeID": 4,
+ "orderDate": "1997-04-18 00:00:00.000",
+ "requiredDate": "1997-05-16 00:00:00.000",
+ "shippedDate": "1997-04-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 350.64,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 50,
+ "discount": 0.15
+ },
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 50,
+ "discount": 0.15
+ },
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 10,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10512,
+ "customerID": "FAMIA",
+ "employeeID": 7,
+ "orderDate": "1997-04-21 00:00:00.000",
+ "requiredDate": "1997-05-19 00:00:00.000",
+ "shippedDate": "1997-04-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.53,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 10,
+ "discount": 0.15
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 9,
+ "discount": 0.15
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 6,
+ "discount": 0.15
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 12,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10513,
+ "customerID": "WANDK",
+ "employeeID": 7,
+ "orderDate": "1997-04-22 00:00:00.000",
+ "requiredDate": "1997-06-03 00:00:00.000",
+ "shippedDate": "1997-04-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 105.65,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 50,
+ "discount": 0.2
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 15,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10506,
+ "customerID": "KOENE",
+ "employeeID": 9,
+ "orderDate": "1997-04-15 00:00:00.000",
+ "requiredDate": "1997-05-13 00:00:00.000",
+ "shippedDate": "1997-05-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 21.19,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 14,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10515,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1997-04-23 00:00:00.000",
+ "requiredDate": "1997-05-07 00:00:00.000",
+ "shippedDate": "1997-05-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 204.47,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 97,
+ "quantity": 16,
+ "discount": 0.15
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 120,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 16,
+ "discount": 0.15
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 84,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10516,
+ "customerID": "HUNGO",
+ "employeeID": 2,
+ "orderDate": "1997-04-24 00:00:00.000",
+ "requiredDate": "1997-05-22 00:00:00.000",
+ "shippedDate": "1997-05-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 62.78,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 80,
+ "discount": 0.1
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10507,
+ "customerID": "ANTON",
+ "employeeID": 7,
+ "orderDate": "1997-04-15 00:00:00.000",
+ "requiredDate": "1997-05-13 00:00:00.000",
+ "shippedDate": "1997-04-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 47.45,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 48,
+ "unitPrice": 12.75,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10514,
+ "customerID": "ERNSH",
+ "employeeID": 3,
+ "orderDate": "1997-04-22 00:00:00.000",
+ "requiredDate": "1997-05-20 00:00:00.000",
+ "shippedDate": "1997-05-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 789.95,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 39,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 39,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 70,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10517,
+ "customerID": "NORTS",
+ "employeeID": 3,
+ "orderDate": "1997-04-24 00:00:00.000",
+ "requiredDate": "1997-05-22 00:00:00.000",
+ "shippedDate": "1997-04-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 32.07,
+ "shipName": "North/South",
+ "shipAddress": {
+ "street": "South House 300 Queensbridge",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "SW7 1RZ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10518,
+ "customerID": "TORTU",
+ "employeeID": 4,
+ "orderDate": "1997-04-25 00:00:00.000",
+ "requiredDate": "1997-05-09 00:00:00.000",
+ "shippedDate": "1997-05-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 218.15,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10519,
+ "customerID": "CHOPS",
+ "employeeID": 6,
+ "orderDate": "1997-04-28 00:00:00.000",
+ "requiredDate": "1997-05-26 00:00:00.000",
+ "shippedDate": "1997-05-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 91.76,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 16,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10520,
+ "customerID": "SANTG",
+ "employeeID": 7,
+ "orderDate": "1997-04-29 00:00:00.000",
+ "requiredDate": "1997-05-27 00:00:00.000",
+ "shippedDate": "1997-05-01 00:00:00.000",
+ "shipVia": 1,
+ "freight": 13.37,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10521,
+ "customerID": "CACTU",
+ "employeeID": 8,
+ "orderDate": "1997-04-29 00:00:00.000",
+ "requiredDate": "1997-05-27 00:00:00.000",
+ "shippedDate": "1997-05-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 17.22,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10522,
+ "customerID": "LEHMS",
+ "employeeID": 4,
+ "orderDate": "1997-04-30 00:00:00.000",
+ "requiredDate": "1997-05-28 00:00:00.000",
+ "shippedDate": "1997-05-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 45.33,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10523,
+ "customerID": "SEVES",
+ "employeeID": 7,
+ "orderDate": "1997-05-01 00:00:00.000",
+ "requiredDate": "1997-05-29 00:00:00.000",
+ "shippedDate": "1997-05-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 77.63,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 37,
+ "unitPrice": 26,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 6,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10524,
+ "customerID": "BERGS",
+ "employeeID": 1,
+ "orderDate": "1997-05-01 00:00:00.000",
+ "requiredDate": "1997-05-29 00:00:00.000",
+ "shippedDate": "1997-05-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 244.79,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10525,
+ "customerID": "BONAP",
+ "employeeID": 1,
+ "orderDate": "1997-05-02 00:00:00.000",
+ "requiredDate": "1997-05-30 00:00:00.000",
+ "shippedDate": "1997-05-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 11.06,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10526,
+ "customerID": "WARTH",
+ "employeeID": 4,
+ "orderDate": "1997-05-05 00:00:00.000",
+ "requiredDate": "1997-06-02 00:00:00.000",
+ "shippedDate": "1997-05-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.59,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 8,
+ "discount": 0.15
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10527,
+ "customerID": "QUICK",
+ "employeeID": 7,
+ "orderDate": "1997-05-05 00:00:00.000",
+ "requiredDate": "1997-06-02 00:00:00.000",
+ "shippedDate": "1997-05-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 41.9,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 50,
+ "discount": 0.1
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10528,
+ "customerID": "GREAL",
+ "employeeID": 6,
+ "orderDate": "1997-05-06 00:00:00.000",
+ "requiredDate": "1997-05-20 00:00:00.000",
+ "shippedDate": "1997-05-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.35,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 8,
+ "discount": 0.2
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10529,
+ "customerID": "MAISD",
+ "employeeID": 5,
+ "orderDate": "1997-05-07 00:00:00.000",
+ "requiredDate": "1997-06-04 00:00:00.000",
+ "shippedDate": "1997-05-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 66.69,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10530,
+ "customerID": "PICCO",
+ "employeeID": 3,
+ "orderDate": "1997-05-08 00:00:00.000",
+ "requiredDate": "1997-06-05 00:00:00.000",
+ "shippedDate": "1997-05-12 00:00:00.000",
+ "shipVia": 2,
+ "freight": 339.22,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10531,
+ "customerID": "OCEAN",
+ "employeeID": 7,
+ "orderDate": "1997-05-08 00:00:00.000",
+ "requiredDate": "1997-06-05 00:00:00.000",
+ "shippedDate": "1997-05-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.12,
+ "shipName": "Océano Atlántico Ltda.",
+ "shipAddress": {
+ "street": "Ing. Gustavo Moncada 8585 Piso 20-A",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10532,
+ "customerID": "EASTC",
+ "employeeID": 7,
+ "orderDate": "1997-05-09 00:00:00.000",
+ "requiredDate": "1997-06-06 00:00:00.000",
+ "shippedDate": "1997-05-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 74.46,
+ "shipName": "Eastern Connection",
+ "shipAddress": {
+ "street": "35 King George",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX3 6FW",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 66,
+ "unitPrice": 17,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10536,
+ "customerID": "LEHMS",
+ "employeeID": 3,
+ "orderDate": "1997-05-14 00:00:00.000",
+ "requiredDate": "1997-06-11 00:00:00.000",
+ "shippedDate": "1997-06-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.88,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10537,
+ "customerID": "RICSU",
+ "employeeID": 1,
+ "orderDate": "1997-05-14 00:00:00.000",
+ "requiredDate": "1997-05-28 00:00:00.000",
+ "shippedDate": "1997-05-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 78.85,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10538,
+ "customerID": "BSBEV",
+ "employeeID": 9,
+ "orderDate": "1997-05-15 00:00:00.000",
+ "requiredDate": "1997-06-12 00:00:00.000",
+ "shippedDate": "1997-05-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.87,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10539,
+ "customerID": "BSBEV",
+ "employeeID": 6,
+ "orderDate": "1997-05-16 00:00:00.000",
+ "requiredDate": "1997-06-13 00:00:00.000",
+ "shippedDate": "1997-05-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 12.36,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10540,
+ "customerID": "QUICK",
+ "employeeID": 3,
+ "orderDate": "1997-05-19 00:00:00.000",
+ "requiredDate": "1997-06-16 00:00:00.000",
+ "shippedDate": "1997-06-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1007.64,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10541,
+ "customerID": "HANAR",
+ "employeeID": 2,
+ "orderDate": "1997-05-19 00:00:00.000",
+ "requiredDate": "1997-06-16 00:00:00.000",
+ "shippedDate": "1997-05-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 68.65,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 35,
+ "discount": 0.1
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 4,
+ "discount": 0.1
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 36,
+ "discount": 0.1
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 9,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10534,
+ "customerID": "LEHMS",
+ "employeeID": 8,
+ "orderDate": "1997-05-12 00:00:00.000",
+ "requiredDate": "1997-06-09 00:00:00.000",
+ "shippedDate": "1997-05-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 27.94,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10533,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1997-05-12 00:00:00.000",
+ "requiredDate": "1997-06-09 00:00:00.000",
+ "shippedDate": "1997-05-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 188.04,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 50,
+ "discount": 0.05
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 24,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10535,
+ "customerID": "ANTON",
+ "employeeID": 4,
+ "orderDate": "1997-05-13 00:00:00.000",
+ "requiredDate": "1997-06-10 00:00:00.000",
+ "shippedDate": "1997-05-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 15.64,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 50,
+ "discount": 0.1
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 5,
+ "discount": 0.1
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10543,
+ "customerID": "LILAS",
+ "employeeID": 8,
+ "orderDate": "1997-05-21 00:00:00.000",
+ "requiredDate": "1997-06-18 00:00:00.000",
+ "shippedDate": "1997-05-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 48.17,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0.15
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 70,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10542,
+ "customerID": "KOENE",
+ "employeeID": 1,
+ "orderDate": "1997-05-20 00:00:00.000",
+ "requiredDate": "1997-06-17 00:00:00.000",
+ "shippedDate": "1997-05-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 10.95,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 24,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10546,
+ "customerID": "VICTE",
+ "employeeID": 1,
+ "orderDate": "1997-05-23 00:00:00.000",
+ "requiredDate": "1997-06-20 00:00:00.000",
+ "shippedDate": "1997-05-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 194.72,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10547,
+ "customerID": "SEVES",
+ "employeeID": 3,
+ "orderDate": "1997-05-23 00:00:00.000",
+ "requiredDate": "1997-06-20 00:00:00.000",
+ "shippedDate": "1997-06-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 178.43,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 24,
+ "discount": 0.15
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10548,
+ "customerID": "TOMSP",
+ "employeeID": 3,
+ "orderDate": "1997-05-26 00:00:00.000",
+ "requiredDate": "1997-06-23 00:00:00.000",
+ "shippedDate": "1997-06-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.43,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0.25
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10550,
+ "customerID": "GODOS",
+ "employeeID": 7,
+ "orderDate": "1997-05-28 00:00:00.000",
+ "requiredDate": "1997-06-25 00:00:00.000",
+ "shippedDate": "1997-06-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.32,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 6,
+ "discount": 0.1
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10544,
+ "customerID": "LONEP",
+ "employeeID": 4,
+ "orderDate": "1997-05-21 00:00:00.000",
+ "requiredDate": "1997-06-18 00:00:00.000",
+ "shippedDate": "1997-05-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 24.91,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10553,
+ "customerID": "WARTH",
+ "employeeID": 2,
+ "orderDate": "1997-05-30 00:00:00.000",
+ "requiredDate": "1997-06-27 00:00:00.000",
+ "shippedDate": "1997-06-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 149.49,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10554,
+ "customerID": "OTTIK",
+ "employeeID": 4,
+ "orderDate": "1997-05-30 00:00:00.000",
+ "requiredDate": "1997-06-27 00:00:00.000",
+ "shippedDate": "1997-06-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 120.97,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10555,
+ "customerID": "SAVEA",
+ "employeeID": 6,
+ "orderDate": "1997-06-02 00:00:00.000",
+ "requiredDate": "1997-06-30 00:00:00.000",
+ "shippedDate": "1997-06-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 252.49,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 18,
+ "discount": 0.2
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10557,
+ "customerID": "LEHMS",
+ "employeeID": 9,
+ "orderDate": "1997-06-03 00:00:00.000",
+ "requiredDate": "1997-06-17 00:00:00.000",
+ "shippedDate": "1997-06-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 96.72,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10558,
+ "customerID": "AROUT",
+ "employeeID": 1,
+ "orderDate": "1997-06-04 00:00:00.000",
+ "requiredDate": "1997-07-02 00:00:00.000",
+ "shippedDate": "1997-06-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 72.97,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10551,
+ "customerID": "FURIB",
+ "employeeID": 4,
+ "orderDate": "1997-05-28 00:00:00.000",
+ "requiredDate": "1997-07-09 00:00:00.000",
+ "shippedDate": "1997-06-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 72.95,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10549,
+ "customerID": "QUICK",
+ "employeeID": 5,
+ "orderDate": "1997-05-27 00:00:00.000",
+ "requiredDate": "1997-06-10 00:00:00.000",
+ "shippedDate": "1997-05-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 171.24,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 55,
+ "discount": 0.15
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 100,
+ "discount": 0.15
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 48,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10552,
+ "customerID": "HILAA",
+ "employeeID": 2,
+ "orderDate": "1997-05-29 00:00:00.000",
+ "requiredDate": "1997-06-26 00:00:00.000",
+ "shippedDate": "1997-06-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 83.22,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10562,
+ "customerID": "REGGC",
+ "employeeID": 1,
+ "orderDate": "1997-06-09 00:00:00.000",
+ "requiredDate": "1997-07-07 00:00:00.000",
+ "shippedDate": "1997-06-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 22.95,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10563,
+ "customerID": "RICAR",
+ "employeeID": 2,
+ "orderDate": "1997-06-10 00:00:00.000",
+ "requiredDate": "1997-07-22 00:00:00.000",
+ "shippedDate": "1997-06-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 60.43,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 70,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10564,
+ "customerID": "RATTC",
+ "employeeID": 4,
+ "orderDate": "1997-06-10 00:00:00.000",
+ "requiredDate": "1997-07-08 00:00:00.000",
+ "shippedDate": "1997-06-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.75,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 16,
+ "discount": 0.05
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 6,
+ "discount": 0.05
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 25,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10565,
+ "customerID": "MEREP",
+ "employeeID": 8,
+ "orderDate": "1997-06-11 00:00:00.000",
+ "requiredDate": "1997-07-09 00:00:00.000",
+ "shippedDate": "1997-06-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.15,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 18,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10566,
+ "customerID": "BLONP",
+ "employeeID": 9,
+ "orderDate": "1997-06-12 00:00:00.000",
+ "requiredDate": "1997-07-10 00:00:00.000",
+ "shippedDate": "1997-06-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 88.4,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 18,
+ "discount": 0.15
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10567,
+ "customerID": "HUNGO",
+ "employeeID": 1,
+ "orderDate": "1997-06-12 00:00:00.000",
+ "requiredDate": "1997-07-10 00:00:00.000",
+ "shippedDate": "1997-06-17 00:00:00.000",
+ "shipVia": 1,
+ "freight": 33.97,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 60,
+ "discount": 0.2
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10559,
+ "customerID": "BLONP",
+ "employeeID": 6,
+ "orderDate": "1997-06-05 00:00:00.000",
+ "requiredDate": "1997-07-03 00:00:00.000",
+ "shippedDate": "1997-06-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.05,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 18,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10569,
+ "customerID": "RATTC",
+ "employeeID": 5,
+ "orderDate": "1997-06-16 00:00:00.000",
+ "requiredDate": "1997-07-14 00:00:00.000",
+ "shippedDate": "1997-07-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 58.98,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10560,
+ "customerID": "FRANK",
+ "employeeID": 8,
+ "orderDate": "1997-06-06 00:00:00.000",
+ "requiredDate": "1997-07-04 00:00:00.000",
+ "shippedDate": "1997-06-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 36.65,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10570,
+ "customerID": "MEREP",
+ "employeeID": 3,
+ "orderDate": "1997-06-17 00:00:00.000",
+ "requiredDate": "1997-07-15 00:00:00.000",
+ "shippedDate": "1997-06-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 188.99,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 60,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10571,
+ "customerID": "ERNSH",
+ "employeeID": 8,
+ "orderDate": "1997-06-17 00:00:00.000",
+ "requiredDate": "1997-07-29 00:00:00.000",
+ "shippedDate": "1997-07-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 26.06,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 11,
+ "discount": 0.15
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 28,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10572,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1997-06-18 00:00:00.000",
+ "requiredDate": "1997-07-16 00:00:00.000",
+ "shippedDate": "1997-06-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 116.43,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 12,
+ "discount": 0.1
+ },
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10561,
+ "customerID": "FOLKO",
+ "employeeID": 2,
+ "orderDate": "1997-06-06 00:00:00.000",
+ "requiredDate": "1997-07-04 00:00:00.000",
+ "shippedDate": "1997-06-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 242.21,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10573,
+ "customerID": "ANTON",
+ "employeeID": 7,
+ "orderDate": "1997-06-19 00:00:00.000",
+ "requiredDate": "1997-07-17 00:00:00.000",
+ "shippedDate": "1997-06-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 84.84,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10574,
+ "customerID": "TRAIH",
+ "employeeID": 4,
+ "orderDate": "1997-06-19 00:00:00.000",
+ "requiredDate": "1997-07-17 00:00:00.000",
+ "shippedDate": "1997-06-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 37.6,
+ "shipName": "Trail's Head Gourmet Provisioners",
+ "shipAddress": {
+ "street": "722 DaVinci Blvd.",
+ "city": "Kirkland",
+ "region": "WA",
+ "postalCode": 98034,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10578,
+ "customerID": "BSBEV",
+ "employeeID": 4,
+ "orderDate": "1997-06-24 00:00:00.000",
+ "requiredDate": "1997-07-22 00:00:00.000",
+ "shippedDate": "1997-07-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 29.6,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10579,
+ "customerID": "LETSS",
+ "employeeID": 1,
+ "orderDate": "1997-06-25 00:00:00.000",
+ "requiredDate": "1997-07-23 00:00:00.000",
+ "shippedDate": "1997-07-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.73,
+ "shipName": "Let's Stop N Shop",
+ "shipAddress": {
+ "street": "87 Polk St. Suite 5",
+ "city": "San Francisco",
+ "region": "CA",
+ "postalCode": 94117,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 15.5,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10580,
+ "customerID": "OTTIK",
+ "employeeID": 4,
+ "orderDate": "1997-06-26 00:00:00.000",
+ "requiredDate": "1997-07-24 00:00:00.000",
+ "shippedDate": "1997-07-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 75.89,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 9,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 30,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10582,
+ "customerID": "BLAUS",
+ "employeeID": 3,
+ "orderDate": "1997-06-27 00:00:00.000",
+ "requiredDate": "1997-07-25 00:00:00.000",
+ "shippedDate": "1997-07-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 27.71,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10583,
+ "customerID": "WARTH",
+ "employeeID": 2,
+ "orderDate": "1997-06-30 00:00:00.000",
+ "requiredDate": "1997-07-28 00:00:00.000",
+ "shippedDate": "1997-07-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.28,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 24,
+ "discount": 0.15
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 10,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10577,
+ "customerID": "TRAIH",
+ "employeeID": 9,
+ "orderDate": "1997-06-23 00:00:00.000",
+ "requiredDate": "1997-08-04 00:00:00.000",
+ "shippedDate": "1997-06-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.41,
+ "shipName": "Trail's Head Gourmet Provisioners",
+ "shipAddress": {
+ "street": "722 DaVinci Blvd.",
+ "city": "Kirkland",
+ "region": "WA",
+ "postalCode": 98034,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10576,
+ "customerID": "TORTU",
+ "employeeID": 3,
+ "orderDate": "1997-06-23 00:00:00.000",
+ "requiredDate": "1997-07-07 00:00:00.000",
+ "shippedDate": "1997-06-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 18.56,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10587,
+ "customerID": "QUEDE",
+ "employeeID": 1,
+ "orderDate": "1997-07-02 00:00:00.000",
+ "requiredDate": "1997-07-30 00:00:00.000",
+ "shippedDate": "1997-07-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 62.52,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10588,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1997-07-03 00:00:00.000",
+ "requiredDate": "1997-07-31 00:00:00.000",
+ "shippedDate": "1997-07-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 194.67,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 100,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10590,
+ "customerID": "MEREP",
+ "employeeID": 4,
+ "orderDate": "1997-07-07 00:00:00.000",
+ "requiredDate": "1997-08-04 00:00:00.000",
+ "shippedDate": "1997-07-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 44.77,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 60,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10575,
+ "customerID": "MORGK",
+ "employeeID": 5,
+ "orderDate": "1997-06-20 00:00:00.000",
+ "requiredDate": "1997-07-04 00:00:00.000",
+ "shippedDate": "1997-06-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 127.34,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10591,
+ "customerID": "VAFFE",
+ "employeeID": 1,
+ "orderDate": "1997-07-07 00:00:00.000",
+ "requiredDate": "1997-07-21 00:00:00.000",
+ "shippedDate": "1997-07-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.92,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10595,
+ "customerID": "ERNSH",
+ "employeeID": 2,
+ "orderDate": "1997-07-10 00:00:00.000",
+ "requiredDate": "1997-08-07 00:00:00.000",
+ "shippedDate": "1997-07-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 96.78,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 65,
+ "discount": 0.25
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 120,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10596,
+ "customerID": "WHITC",
+ "employeeID": 8,
+ "orderDate": "1997-07-11 00:00:00.000",
+ "requiredDate": "1997-08-08 00:00:00.000",
+ "shippedDate": "1997-08-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.34,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 5,
+ "discount": 0.2
+ },
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 24,
+ "discount": 0.2
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 30,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10597,
+ "customerID": "PICCO",
+ "employeeID": 7,
+ "orderDate": "1997-07-11 00:00:00.000",
+ "requiredDate": "1997-08-08 00:00:00.000",
+ "shippedDate": "1997-07-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 35.12,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 12,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10598,
+ "customerID": "RATTC",
+ "employeeID": 1,
+ "orderDate": "1997-07-14 00:00:00.000",
+ "requiredDate": "1997-08-11 00:00:00.000",
+ "shippedDate": "1997-07-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 44.42,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10600,
+ "customerID": "HUNGC",
+ "employeeID": 4,
+ "orderDate": "1997-07-16 00:00:00.000",
+ "requiredDate": "1997-08-13 00:00:00.000",
+ "shippedDate": "1997-07-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 45.13,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10601,
+ "customerID": "HILAA",
+ "employeeID": 7,
+ "orderDate": "1997-07-16 00:00:00.000",
+ "requiredDate": "1997-08-27 00:00:00.000",
+ "shippedDate": "1997-07-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 58.3,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10603,
+ "customerID": "SAVEA",
+ "employeeID": 8,
+ "orderDate": "1997-07-18 00:00:00.000",
+ "requiredDate": "1997-08-15 00:00:00.000",
+ "shippedDate": "1997-08-08 00:00:00.000",
+ "shipVia": 2,
+ "freight": 48.77,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 48,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 25,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10604,
+ "customerID": "FURIB",
+ "employeeID": 1,
+ "orderDate": "1997-07-18 00:00:00.000",
+ "requiredDate": "1997-08-15 00:00:00.000",
+ "shippedDate": "1997-07-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 7.46,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 48,
+ "unitPrice": 12.75,
+ "quantity": 6,
+ "discount": 0.1
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10605,
+ "customerID": "MEREP",
+ "employeeID": 1,
+ "orderDate": "1997-07-21 00:00:00.000",
+ "requiredDate": "1997-08-18 00:00:00.000",
+ "shippedDate": "1997-07-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 379.13,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 70,
+ "discount": 0.05
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10606,
+ "customerID": "TRADH",
+ "employeeID": 4,
+ "orderDate": "1997-07-22 00:00:00.000",
+ "requiredDate": "1997-08-19 00:00:00.000",
+ "shippedDate": "1997-07-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 79.4,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10594,
+ "customerID": "OLDWO",
+ "employeeID": 3,
+ "orderDate": "1997-07-09 00:00:00.000",
+ "requiredDate": "1997-08-06 00:00:00.000",
+ "shippedDate": "1997-07-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 5.24,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10593,
+ "customerID": "LEHMS",
+ "employeeID": 7,
+ "orderDate": "1997-07-09 00:00:00.000",
+ "requiredDate": "1997-08-06 00:00:00.000",
+ "shippedDate": "1997-08-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 174.2,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 21,
+ "discount": 0.2
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 4,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10592,
+ "customerID": "LEHMS",
+ "employeeID": 3,
+ "orderDate": "1997-07-08 00:00:00.000",
+ "requiredDate": "1997-08-05 00:00:00.000",
+ "shippedDate": "1997-07-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 32.1,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 15.5,
+ "quantity": 25,
+ "discount": 0.05
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 5,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10607,
+ "customerID": "SAVEA",
+ "employeeID": 5,
+ "orderDate": "1997-07-22 00:00:00.000",
+ "requiredDate": "1997-08-19 00:00:00.000",
+ "shippedDate": "1997-07-25 00:00:00.000",
+ "shipVia": 1,
+ "freight": 200.24,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 100,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10609,
+ "customerID": "DUMON",
+ "employeeID": 7,
+ "orderDate": "1997-07-24 00:00:00.000",
+ "requiredDate": "1997-08-21 00:00:00.000",
+ "shippedDate": "1997-07-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.85,
+ "shipName": "Du monde entier",
+ "shipAddress": {
+ "street": "67 rue des Cinquante Otages",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10614,
+ "customerID": "BLAUS",
+ "employeeID": 8,
+ "orderDate": "1997-07-29 00:00:00.000",
+ "requiredDate": "1997-08-26 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.93,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10616,
+ "customerID": "GREAL",
+ "employeeID": 1,
+ "orderDate": "1997-07-31 00:00:00.000",
+ "requiredDate": "1997-08-28 00:00:00.000",
+ "shippedDate": "1997-08-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 116.53,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10618,
+ "customerID": "MEREP",
+ "employeeID": 1,
+ "orderDate": "1997-08-01 00:00:00.000",
+ "requiredDate": "1997-09-12 00:00:00.000",
+ "shippedDate": "1997-08-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 154.68,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10619,
+ "customerID": "MEREP",
+ "employeeID": 3,
+ "orderDate": "1997-08-04 00:00:00.000",
+ "requiredDate": "1997-09-01 00:00:00.000",
+ "shippedDate": "1997-08-07 00:00:00.000",
+ "shipVia": 3,
+ "freight": 91.05,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10612,
+ "customerID": "SAVEA",
+ "employeeID": 1,
+ "orderDate": "1997-07-28 00:00:00.000",
+ "requiredDate": "1997-08-25 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 544.08,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 55,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 80,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10613,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1997-07-29 00:00:00.000",
+ "requiredDate": "1997-08-26 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.11,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10611,
+ "customerID": "WOLZA",
+ "employeeID": 6,
+ "orderDate": "1997-07-25 00:00:00.000",
+ "requiredDate": "1997-08-22 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 80.65,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10621,
+ "customerID": "ISLAT",
+ "employeeID": 4,
+ "orderDate": "1997-08-05 00:00:00.000",
+ "requiredDate": "1997-09-02 00:00:00.000",
+ "shippedDate": "1997-08-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 23.73,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10620,
+ "customerID": "LAUGB",
+ "employeeID": 2,
+ "orderDate": "1997-08-05 00:00:00.000",
+ "requiredDate": "1997-09-02 00:00:00.000",
+ "shippedDate": "1997-08-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.94,
+ "shipName": "Laughing Bacchus Wine Cellars",
+ "shipAddress": {
+ "street": "2319 Elm St.",
+ "city": "Vancouver",
+ "region": "BC",
+ "postalCode": "V3F 2K1",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10625,
+ "customerID": "ANATR",
+ "employeeID": 3,
+ "orderDate": "1997-08-08 00:00:00.000",
+ "requiredDate": "1997-09-05 00:00:00.000",
+ "shippedDate": "1997-08-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 43.9,
+ "shipName": "Ana Trujillo Emparedados y helados",
+ "shipAddress": {
+ "street": "Avda. de la Constitución 2222",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5021,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10623,
+ "customerID": "FRANK",
+ "employeeID": 8,
+ "orderDate": "1997-08-07 00:00:00.000",
+ "requiredDate": "1997-09-04 00:00:00.000",
+ "shippedDate": "1997-08-12 00:00:00.000",
+ "shipVia": 2,
+ "freight": 97.18,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10622,
+ "customerID": "RICAR",
+ "employeeID": 4,
+ "orderDate": "1997-08-06 00:00:00.000",
+ "requiredDate": "1997-09-03 00:00:00.000",
+ "shippedDate": "1997-08-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 50.97,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 18,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10624,
+ "customerID": "THECR",
+ "employeeID": 4,
+ "orderDate": "1997-08-07 00:00:00.000",
+ "requiredDate": "1997-09-04 00:00:00.000",
+ "shippedDate": "1997-08-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 94.8,
+ "shipName": "The Cracker Box",
+ "shipAddress": {
+ "street": "55 Grizzly Peak Rd.",
+ "city": "Butte",
+ "region": "MT",
+ "postalCode": 59801,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10626,
+ "customerID": "BERGS",
+ "employeeID": 1,
+ "orderDate": "1997-08-11 00:00:00.000",
+ "requiredDate": "1997-09-08 00:00:00.000",
+ "shippedDate": "1997-08-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 138.69,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10627,
+ "customerID": "SAVEA",
+ "employeeID": 8,
+ "orderDate": "1997-08-11 00:00:00.000",
+ "requiredDate": "1997-09-22 00:00:00.000",
+ "shippedDate": "1997-08-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 107.46,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 35,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10630,
+ "customerID": "KOENE",
+ "employeeID": 1,
+ "orderDate": "1997-08-13 00:00:00.000",
+ "requiredDate": "1997-09-10 00:00:00.000",
+ "shippedDate": "1997-08-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 32.35,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10629,
+ "customerID": "GODOS",
+ "employeeID": 4,
+ "orderDate": "1997-08-12 00:00:00.000",
+ "requiredDate": "1997-09-09 00:00:00.000",
+ "shippedDate": "1997-08-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 85.46,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10632,
+ "customerID": "WANDK",
+ "employeeID": 8,
+ "orderDate": "1997-08-14 00:00:00.000",
+ "requiredDate": "1997-09-11 00:00:00.000",
+ "shippedDate": "1997-08-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 41.38,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10633,
+ "customerID": "ERNSH",
+ "employeeID": 7,
+ "orderDate": "1997-08-15 00:00:00.000",
+ "requiredDate": "1997-09-12 00:00:00.000",
+ "shippedDate": "1997-08-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 477.9,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 36,
+ "discount": 0.15
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 13,
+ "discount": 0.15
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 80,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10634,
+ "customerID": "FOLIG",
+ "employeeID": 4,
+ "orderDate": "1997-08-15 00:00:00.000",
+ "requiredDate": "1997-09-12 00:00:00.000",
+ "shippedDate": "1997-08-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 487.38,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10638,
+ "customerID": "LINOD",
+ "employeeID": 3,
+ "orderDate": "1997-08-20 00:00:00.000",
+ "requiredDate": "1997-09-17 00:00:00.000",
+ "shippedDate": "1997-09-01 00:00:00.000",
+ "shipVia": 1,
+ "freight": 158.44,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10640,
+ "customerID": "WANDK",
+ "employeeID": 4,
+ "orderDate": "1997-08-21 00:00:00.000",
+ "requiredDate": "1997-09-18 00:00:00.000",
+ "shippedDate": "1997-08-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 23.55,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10641,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1997-08-22 00:00:00.000",
+ "requiredDate": "1997-09-19 00:00:00.000",
+ "shippedDate": "1997-08-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 179.61,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10642,
+ "customerID": "SIMOB",
+ "employeeID": 7,
+ "orderDate": "1997-08-22 00:00:00.000",
+ "requiredDate": "1997-09-19 00:00:00.000",
+ "shippedDate": "1997-09-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 41.89,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10643,
+ "customerID": "ALFKI",
+ "employeeID": 6,
+ "orderDate": "1997-08-25 00:00:00.000",
+ "requiredDate": "1997-09-22 00:00:00.000",
+ "shippedDate": "1997-09-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 29.46,
+ "shipName": "Alfreds Futterkiste",
+ "shipAddress": {
+ "street": "Obere Str. 57",
+ "city": "Berlin",
+ "region": "NULL",
+ "postalCode": 12209,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 2,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10636,
+ "customerID": "WARTH",
+ "employeeID": 4,
+ "orderDate": "1997-08-19 00:00:00.000",
+ "requiredDate": "1997-09-16 00:00:00.000",
+ "shippedDate": "1997-08-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.15,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10644,
+ "customerID": "WELLI",
+ "employeeID": 3,
+ "orderDate": "1997-08-25 00:00:00.000",
+ "requiredDate": "1997-09-22 00:00:00.000",
+ "shippedDate": "1997-09-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.14,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 4,
+ "discount": 0.1
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 21,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10635,
+ "customerID": "MAGAA",
+ "employeeID": 8,
+ "orderDate": "1997-08-18 00:00:00.000",
+ "requiredDate": "1997-09-15 00:00:00.000",
+ "shippedDate": "1997-08-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 47.46,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 5,
+ "unitPrice": 21.35,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10637,
+ "customerID": "QUEEN",
+ "employeeID": 6,
+ "orderDate": "1997-08-19 00:00:00.000",
+ "requiredDate": "1997-09-16 00:00:00.000",
+ "shippedDate": "1997-08-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 201.29,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 50,
+ "unitPrice": 16.25,
+ "quantity": 25,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 60,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10645,
+ "customerID": "HANAR",
+ "employeeID": 4,
+ "orderDate": "1997-08-26 00:00:00.000",
+ "requiredDate": "1997-09-23 00:00:00.000",
+ "shippedDate": "1997-09-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.41,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10649,
+ "customerID": "MAISD",
+ "employeeID": 5,
+ "orderDate": "1997-08-28 00:00:00.000",
+ "requiredDate": "1997-09-25 00:00:00.000",
+ "shippedDate": "1997-08-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 6.2,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10650,
+ "customerID": "FAMIA",
+ "employeeID": 5,
+ "orderDate": "1997-08-29 00:00:00.000",
+ "requiredDate": "1997-09-26 00:00:00.000",
+ "shippedDate": "1997-09-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 176.81,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 25,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10651,
+ "customerID": "WANDK",
+ "employeeID": 8,
+ "orderDate": "1997-09-01 00:00:00.000",
+ "requiredDate": "1997-09-29 00:00:00.000",
+ "shippedDate": "1997-09-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 20.6,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 20,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10652,
+ "customerID": "GOURL",
+ "employeeID": 4,
+ "orderDate": "1997-09-01 00:00:00.000",
+ "requiredDate": "1997-09-29 00:00:00.000",
+ "shippedDate": "1997-09-08 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.14,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 2,
+ "discount": 0.25
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10653,
+ "customerID": "FRANK",
+ "employeeID": 1,
+ "orderDate": "1997-09-02 00:00:00.000",
+ "requiredDate": "1997-09-30 00:00:00.000",
+ "shippedDate": "1997-09-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 93.25,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10654,
+ "customerID": "BERGS",
+ "employeeID": 5,
+ "orderDate": "1997-09-02 00:00:00.000",
+ "requiredDate": "1997-09-30 00:00:00.000",
+ "shippedDate": "1997-09-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.26,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 12,
+ "discount": 0.1
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 6,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10647,
+ "customerID": "QUEDE",
+ "employeeID": 4,
+ "orderDate": "1997-08-27 00:00:00.000",
+ "requiredDate": "1997-09-10 00:00:00.000",
+ "shippedDate": "1997-09-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 45.54,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10656,
+ "customerID": "GREAL",
+ "employeeID": 6,
+ "orderDate": "1997-09-04 00:00:00.000",
+ "requiredDate": "1997-10-02 00:00:00.000",
+ "shippedDate": "1997-09-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 57.15,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 3,
+ "discount": 0.1
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 28,
+ "discount": 0.1
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 6,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10657,
+ "customerID": "SAVEA",
+ "employeeID": 2,
+ "orderDate": "1997-09-04 00:00:00.000",
+ "requiredDate": "1997-10-02 00:00:00.000",
+ "shippedDate": "1997-09-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 352.69,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 15,
+ "unitPrice": 15.5,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10658,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1997-09-05 00:00:00.000",
+ "requiredDate": "1997-10-03 00:00:00.000",
+ "shippedDate": "1997-09-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 364.15,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 70,
+ "discount": 0.05
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 55,
+ "discount": 0.05
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 70,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10646,
+ "customerID": "HUNGO",
+ "employeeID": 9,
+ "orderDate": "1997-08-27 00:00:00.000",
+ "requiredDate": "1997-10-08 00:00:00.000",
+ "shippedDate": "1997-09-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 142.33,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 18,
+ "discount": 0.25
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 35,
+ "discount": 0.25
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10648,
+ "customerID": "RICAR",
+ "employeeID": 5,
+ "orderDate": "1997-08-28 00:00:00.000",
+ "requiredDate": "1997-10-09 00:00:00.000",
+ "shippedDate": "1997-09-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 14.25,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10659,
+ "customerID": "QUEEN",
+ "employeeID": 7,
+ "orderDate": "1997-09-05 00:00:00.000",
+ "requiredDate": "1997-10-03 00:00:00.000",
+ "shippedDate": "1997-09-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 105.81,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 24,
+ "discount": 0.05
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10664,
+ "customerID": "FURIB",
+ "employeeID": 1,
+ "orderDate": "1997-09-10 00:00:00.000",
+ "requiredDate": "1997-10-08 00:00:00.000",
+ "shippedDate": "1997-09-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.27,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 24,
+ "discount": 0.15
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 12,
+ "discount": 0.15
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10661,
+ "customerID": "HUNGO",
+ "employeeID": 7,
+ "orderDate": "1997-09-09 00:00:00.000",
+ "requiredDate": "1997-10-07 00:00:00.000",
+ "shippedDate": "1997-09-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 17.55,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 3,
+ "discount": 0.2
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 49,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10665,
+ "customerID": "LONEP",
+ "employeeID": 1,
+ "orderDate": "1997-09-11 00:00:00.000",
+ "requiredDate": "1997-10-09 00:00:00.000",
+ "shippedDate": "1997-09-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 26.31,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10663,
+ "customerID": "BONAP",
+ "employeeID": 2,
+ "orderDate": "1997-09-10 00:00:00.000",
+ "requiredDate": "1997-09-24 00:00:00.000",
+ "shippedDate": "1997-10-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 113.15,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10666,
+ "customerID": "RICSU",
+ "employeeID": 7,
+ "orderDate": "1997-09-12 00:00:00.000",
+ "requiredDate": "1997-10-10 00:00:00.000",
+ "shippedDate": "1997-09-22 00:00:00.000",
+ "shipVia": 2,
+ "freight": 232.42,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10667,
+ "customerID": "ERNSH",
+ "employeeID": 7,
+ "orderDate": "1997-09-12 00:00:00.000",
+ "requiredDate": "1997-10-10 00:00:00.000",
+ "shippedDate": "1997-09-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 78.09,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 45,
+ "discount": 0.2
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 14,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10668,
+ "customerID": "WANDK",
+ "employeeID": 1,
+ "orderDate": "1997-09-15 00:00:00.000",
+ "requiredDate": "1997-10-13 00:00:00.000",
+ "shippedDate": "1997-09-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 47.22,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 4,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10670,
+ "customerID": "FRANK",
+ "employeeID": 4,
+ "orderDate": "1997-09-16 00:00:00.000",
+ "requiredDate": "1997-10-14 00:00:00.000",
+ "shippedDate": "1997-09-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 203.48,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 32,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10672,
+ "customerID": "BERGS",
+ "employeeID": 9,
+ "orderDate": "1997-09-17 00:00:00.000",
+ "requiredDate": "1997-10-01 00:00:00.000",
+ "shippedDate": "1997-09-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 95.75,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10671,
+ "customerID": "FRANR",
+ "employeeID": 1,
+ "orderDate": "1997-09-17 00:00:00.000",
+ "requiredDate": "1997-10-15 00:00:00.000",
+ "shippedDate": "1997-09-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 30.34,
+ "shipName": "France restauration",
+ "shipAddress": {
+ "street": "54 rue Royale",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10673,
+ "customerID": "WILMK",
+ "employeeID": 2,
+ "orderDate": "1997-09-18 00:00:00.000",
+ "requiredDate": "1997-10-16 00:00:00.000",
+ "shippedDate": "1997-09-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 22.76,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10677,
+ "customerID": "ANTON",
+ "employeeID": 1,
+ "orderDate": "1997-09-22 00:00:00.000",
+ "requiredDate": "1997-10-20 00:00:00.000",
+ "shippedDate": "1997-09-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.03,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 30,
+ "discount": 0.15
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 8,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10678,
+ "customerID": "SAVEA",
+ "employeeID": 7,
+ "orderDate": "1997-09-23 00:00:00.000",
+ "requiredDate": "1997-10-21 00:00:00.000",
+ "shippedDate": "1997-10-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 388.98,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 100,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 120,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10680,
+ "customerID": "OLDWO",
+ "employeeID": 1,
+ "orderDate": "1997-09-24 00:00:00.000",
+ "requiredDate": "1997-10-22 00:00:00.000",
+ "shippedDate": "1997-09-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 26.61,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 40,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10681,
+ "customerID": "GREAL",
+ "employeeID": 3,
+ "orderDate": "1997-09-25 00:00:00.000",
+ "requiredDate": "1997-10-23 00:00:00.000",
+ "shippedDate": "1997-09-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 76.13,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 12,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10682,
+ "customerID": "ANTON",
+ "employeeID": 3,
+ "orderDate": "1997-09-25 00:00:00.000",
+ "requiredDate": "1997-10-23 00:00:00.000",
+ "shippedDate": "1997-10-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 36.13,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 66,
+ "unitPrice": 17,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10675,
+ "customerID": "FRANK",
+ "employeeID": 5,
+ "orderDate": "1997-09-19 00:00:00.000",
+ "requiredDate": "1997-10-17 00:00:00.000",
+ "shippedDate": "1997-09-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 31.85,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10684,
+ "customerID": "OTTIK",
+ "employeeID": 3,
+ "orderDate": "1997-09-26 00:00:00.000",
+ "requiredDate": "1997-10-24 00:00:00.000",
+ "shippedDate": "1997-09-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 145.63,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10685,
+ "customerID": "GOURL",
+ "employeeID": 4,
+ "orderDate": "1997-09-29 00:00:00.000",
+ "requiredDate": "1997-10-13 00:00:00.000",
+ "shippedDate": "1997-10-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 33.75,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10676,
+ "customerID": "TORTU",
+ "employeeID": 2,
+ "orderDate": "1997-09-22 00:00:00.000",
+ "requiredDate": "1997-10-20 00:00:00.000",
+ "shippedDate": "1997-09-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.01,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10686,
+ "customerID": "PICCO",
+ "employeeID": 2,
+ "orderDate": "1997-09-30 00:00:00.000",
+ "requiredDate": "1997-10-28 00:00:00.000",
+ "shippedDate": "1997-10-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 96.5,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 30,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10687,
+ "customerID": "HUNGO",
+ "employeeID": 9,
+ "orderDate": "1997-09-30 00:00:00.000",
+ "requiredDate": "1997-10-28 00:00:00.000",
+ "shippedDate": "1997-10-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 296.43,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 97,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 6,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10691,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1997-10-03 00:00:00.000",
+ "requiredDate": "1997-11-14 00:00:00.000",
+ "shippedDate": "1997-10-22 00:00:00.000",
+ "shipVia": 2,
+ "freight": 810.05,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 48,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10693,
+ "customerID": "WHITC",
+ "employeeID": 3,
+ "orderDate": "1997-10-06 00:00:00.000",
+ "requiredDate": "1997-10-20 00:00:00.000",
+ "shippedDate": "1997-10-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 139.34,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 97,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 60,
+ "discount": 0.15
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 30,
+ "discount": 0.15
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10694,
+ "customerID": "QUICK",
+ "employeeID": 8,
+ "orderDate": "1997-10-06 00:00:00.000",
+ "requiredDate": "1997-11-03 00:00:00.000",
+ "shippedDate": "1997-10-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 398.36,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 90,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10695,
+ "customerID": "WILMK",
+ "employeeID": 7,
+ "orderDate": "1997-10-07 00:00:00.000",
+ "requiredDate": "1997-11-18 00:00:00.000",
+ "shippedDate": "1997-10-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.72,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10696,
+ "customerID": "WHITC",
+ "employeeID": 8,
+ "orderDate": "1997-10-08 00:00:00.000",
+ "requiredDate": "1997-11-19 00:00:00.000",
+ "shippedDate": "1997-10-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 102.55,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10697,
+ "customerID": "LINOD",
+ "employeeID": 3,
+ "orderDate": "1997-10-08 00:00:00.000",
+ "requiredDate": "1997-11-05 00:00:00.000",
+ "shippedDate": "1997-10-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 45.52,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 9,
+ "discount": 0.25
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 7,
+ "discount": 0.25
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10698,
+ "customerID": "ERNSH",
+ "employeeID": 4,
+ "orderDate": "1997-10-09 00:00:00.000",
+ "requiredDate": "1997-11-06 00:00:00.000",
+ "shippedDate": "1997-10-17 00:00:00.000",
+ "shipVia": 1,
+ "freight": 272.47,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 8,
+ "discount": 0.05
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 65,
+ "discount": 0.05
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 8,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10690,
+ "customerID": "HANAR",
+ "employeeID": 1,
+ "orderDate": "1997-10-02 00:00:00.000",
+ "requiredDate": "1997-10-30 00:00:00.000",
+ "shippedDate": "1997-10-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 15.8,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10702,
+ "customerID": "ALFKI",
+ "employeeID": 4,
+ "orderDate": "1997-10-13 00:00:00.000",
+ "requiredDate": "1997-11-24 00:00:00.000",
+ "shippedDate": "1997-10-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 23.94,
+ "shipName": "Alfred's Futterkiste",
+ "shipAddress": {
+ "street": "Obere Str. 57",
+ "city": "Berlin",
+ "region": "NULL",
+ "postalCode": 12209,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10700,
+ "customerID": "SAVEA",
+ "employeeID": 3,
+ "orderDate": "1997-10-10 00:00:00.000",
+ "requiredDate": "1997-11-07 00:00:00.000",
+ "shippedDate": "1997-10-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 65.1,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 5,
+ "discount": 0.2
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 60,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10688,
+ "customerID": "VAFFE",
+ "employeeID": 4,
+ "orderDate": "1997-10-01 00:00:00.000",
+ "requiredDate": "1997-10-15 00:00:00.000",
+ "shippedDate": "1997-10-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 299.09,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 60,
+ "discount": 0.1
+ },
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10701,
+ "customerID": "HUNGO",
+ "employeeID": 6,
+ "orderDate": "1997-10-13 00:00:00.000",
+ "requiredDate": "1997-10-27 00:00:00.000",
+ "shippedDate": "1997-10-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 220.31,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 42,
+ "discount": 0.15
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 35,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10703,
+ "customerID": "FOLKO",
+ "employeeID": 6,
+ "orderDate": "1997-10-14 00:00:00.000",
+ "requiredDate": "1997-11-11 00:00:00.000",
+ "shippedDate": "1997-10-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 152.3,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10704,
+ "customerID": "QUEEN",
+ "employeeID": 6,
+ "orderDate": "1997-10-14 00:00:00.000",
+ "requiredDate": "1997-11-11 00:00:00.000",
+ "shippedDate": "1997-11-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.78,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 48,
+ "unitPrice": 12.75,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10708,
+ "customerID": "THEBI",
+ "employeeID": 6,
+ "orderDate": "1997-10-17 00:00:00.000",
+ "requiredDate": "1997-11-28 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.96,
+ "shipName": "The Big Cheese",
+ "shipAddress": {
+ "street": "89 Jefferson Way Suite 2",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97201,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 5,
+ "unitPrice": 21.35,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10709,
+ "customerID": "GOURL",
+ "employeeID": 1,
+ "orderDate": "1997-10-17 00:00:00.000",
+ "requiredDate": "1997-11-14 00:00:00.000",
+ "shippedDate": "1997-11-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 210.8,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10710,
+ "customerID": "FRANS",
+ "employeeID": 1,
+ "orderDate": "1997-10-20 00:00:00.000",
+ "requiredDate": "1997-11-17 00:00:00.000",
+ "shippedDate": "1997-10-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.98,
+ "shipName": "Franchi S.p.A.",
+ "shipAddress": {
+ "street": "Via Monte Bianco 34",
+ "city": "Torino",
+ "region": "NULL",
+ "postalCode": 10100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10711,
+ "customerID": "SAVEA",
+ "employeeID": 5,
+ "orderDate": "1997-10-21 00:00:00.000",
+ "requiredDate": "1997-12-02 00:00:00.000",
+ "shippedDate": "1997-10-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 52.41,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 120,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10712,
+ "customerID": "HUNGO",
+ "employeeID": 3,
+ "orderDate": "1997-10-21 00:00:00.000",
+ "requiredDate": "1997-11-18 00:00:00.000",
+ "shippedDate": "1997-10-31 00:00:00.000",
+ "shipVia": 1,
+ "freight": 89.93,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 3,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10713,
+ "customerID": "SAVEA",
+ "employeeID": 1,
+ "orderDate": "1997-10-22 00:00:00.000",
+ "requiredDate": "1997-11-19 00:00:00.000",
+ "shippedDate": "1997-10-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 167.05,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 110,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10707,
+ "customerID": "AROUT",
+ "employeeID": 4,
+ "orderDate": "1997-10-16 00:00:00.000",
+ "requiredDate": "1997-10-30 00:00:00.000",
+ "shippedDate": "1997-10-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 21.74,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 28,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10715,
+ "customerID": "BONAP",
+ "employeeID": 3,
+ "orderDate": "1997-10-23 00:00:00.000",
+ "requiredDate": "1997-11-06 00:00:00.000",
+ "shippedDate": "1997-10-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 63.2,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10706,
+ "customerID": "OLDWO",
+ "employeeID": 8,
+ "orderDate": "1997-10-16 00:00:00.000",
+ "requiredDate": "1997-11-13 00:00:00.000",
+ "shippedDate": "1997-10-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 135.63,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10705,
+ "customerID": "HILAA",
+ "employeeID": 9,
+ "orderDate": "1997-10-15 00:00:00.000",
+ "requiredDate": "1997-11-12 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.52,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10714,
+ "customerID": "SAVEA",
+ "employeeID": 5,
+ "orderDate": "1997-10-22 00:00:00.000",
+ "requiredDate": "1997-11-19 00:00:00.000",
+ "shippedDate": "1997-10-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 24.49,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 18,
+ "discount": 0.25
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 27,
+ "discount": 0.25
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10719,
+ "customerID": "LETSS",
+ "employeeID": 8,
+ "orderDate": "1997-10-27 00:00:00.000",
+ "requiredDate": "1997-11-24 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 51.44,
+ "shipName": "Let's Stop N Shop",
+ "shipAddress": {
+ "street": "87 Polk St. Suite 5",
+ "city": "San Francisco",
+ "region": "CA",
+ "postalCode": 94117,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 3,
+ "discount": 0.25
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 40,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10720,
+ "customerID": "QUEDE",
+ "employeeID": 8,
+ "orderDate": "1997-10-28 00:00:00.000",
+ "requiredDate": "1997-11-11 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 9.53,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10722,
+ "customerID": "SAVEA",
+ "employeeID": 8,
+ "orderDate": "1997-10-29 00:00:00.000",
+ "requiredDate": "1997-12-10 00:00:00.000",
+ "shippedDate": "1997-11-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 74.58,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 42,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10724,
+ "customerID": "MEREP",
+ "employeeID": 8,
+ "orderDate": "1997-10-30 00:00:00.000",
+ "requiredDate": "1997-12-11 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 57.75,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10716,
+ "customerID": "RANCH",
+ "employeeID": 4,
+ "orderDate": "1997-10-24 00:00:00.000",
+ "requiredDate": "1997-11-21 00:00:00.000",
+ "shippedDate": "1997-10-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 22.57,
+ "shipName": "Rancho grande",
+ "shipAddress": {
+ "street": "Av. del Libertador 900",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10726,
+ "customerID": "EASTC",
+ "employeeID": 4,
+ "orderDate": "1997-11-03 00:00:00.000",
+ "requiredDate": "1997-11-17 00:00:00.000",
+ "shippedDate": "1997-12-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.56,
+ "shipName": "Eastern Connection",
+ "shipAddress": {
+ "street": "35 King George",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX3 6FW",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10717,
+ "customerID": "FRANK",
+ "employeeID": 1,
+ "orderDate": "1997-10-24 00:00:00.000",
+ "requiredDate": "1997-11-21 00:00:00.000",
+ "shippedDate": "1997-10-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 59.25,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 32,
+ "discount": 0.05
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 25,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10727,
+ "customerID": "REGGC",
+ "employeeID": 2,
+ "orderDate": "1997-11-03 00:00:00.000",
+ "requiredDate": "1997-12-01 00:00:00.000",
+ "shippedDate": "1997-12-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 89.9,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10728,
+ "customerID": "QUEEN",
+ "employeeID": 4,
+ "orderDate": "1997-11-04 00:00:00.000",
+ "requiredDate": "1997-12-02 00:00:00.000",
+ "shippedDate": "1997-11-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.33,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10729,
+ "customerID": "LINOD",
+ "employeeID": 8,
+ "orderDate": "1997-11-04 00:00:00.000",
+ "requiredDate": "1997-12-16 00:00:00.000",
+ "shippedDate": "1997-11-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 141.06,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 50,
+ "unitPrice": 16.25,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10730,
+ "customerID": "BONAP",
+ "employeeID": 5,
+ "orderDate": "1997-11-05 00:00:00.000",
+ "requiredDate": "1997-12-03 00:00:00.000",
+ "shippedDate": "1997-11-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 20.12,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 3,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10718,
+ "customerID": "KOENE",
+ "employeeID": 1,
+ "orderDate": "1997-10-27 00:00:00.000",
+ "requiredDate": "1997-11-24 00:00:00.000",
+ "shippedDate": "1997-10-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 170.88,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10725,
+ "customerID": "FAMIA",
+ "employeeID": 4,
+ "orderDate": "1997-10-31 00:00:00.000",
+ "requiredDate": "1997-11-28 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 10.83,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10731,
+ "customerID": "CHOPS",
+ "employeeID": 7,
+ "orderDate": "1997-11-06 00:00:00.000",
+ "requiredDate": "1997-12-04 00:00:00.000",
+ "shippedDate": "1997-11-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 96.65,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0.05
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 30,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10735,
+ "customerID": "LETSS",
+ "employeeID": 6,
+ "orderDate": "1997-11-10 00:00:00.000",
+ "requiredDate": "1997-12-08 00:00:00.000",
+ "shippedDate": "1997-11-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 45.97,
+ "shipName": "Let's Stop N Shop",
+ "shipAddress": {
+ "street": "87 Polk St. Suite 5",
+ "city": "San Francisco",
+ "region": "CA",
+ "postalCode": 94117,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 2,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10736,
+ "customerID": "HUNGO",
+ "employeeID": 9,
+ "orderDate": "1997-11-11 00:00:00.000",
+ "requiredDate": "1997-12-09 00:00:00.000",
+ "shippedDate": "1997-11-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 44.1,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10737,
+ "customerID": "VINET",
+ "employeeID": 2,
+ "orderDate": "1997-11-11 00:00:00.000",
+ "requiredDate": "1997-12-09 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.79,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10739,
+ "customerID": "VINET",
+ "employeeID": 3,
+ "orderDate": "1997-11-12 00:00:00.000",
+ "requiredDate": "1997-12-10 00:00:00.000",
+ "shippedDate": "1997-11-17 00:00:00.000",
+ "shipVia": 3,
+ "freight": 11.08,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10740,
+ "customerID": "WHITC",
+ "employeeID": 4,
+ "orderDate": "1997-11-13 00:00:00.000",
+ "requiredDate": "1997-12-11 00:00:00.000",
+ "shippedDate": "1997-11-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 81.88,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 5,
+ "discount": 0.2
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 14,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10733,
+ "customerID": "BERGS",
+ "employeeID": 1,
+ "orderDate": "1997-11-07 00:00:00.000",
+ "requiredDate": "1997-12-05 00:00:00.000",
+ "shippedDate": "1997-11-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 110.11,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10742,
+ "customerID": "BOTTM",
+ "employeeID": 3,
+ "orderDate": "1997-11-14 00:00:00.000",
+ "requiredDate": "1997-12-12 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 243.73,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10734,
+ "customerID": "GOURL",
+ "employeeID": 2,
+ "orderDate": "1997-11-07 00:00:00.000",
+ "requiredDate": "1997-12-05 00:00:00.000",
+ "shippedDate": "1997-11-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.63,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10747,
+ "customerID": "PICCO",
+ "employeeID": 6,
+ "orderDate": "1997-11-19 00:00:00.000",
+ "requiredDate": "1997-12-17 00:00:00.000",
+ "shippedDate": "1997-11-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 117.33,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10748,
+ "customerID": "SAVEA",
+ "employeeID": 3,
+ "orderDate": "1997-11-20 00:00:00.000",
+ "requiredDate": "1997-12-18 00:00:00.000",
+ "shippedDate": "1997-11-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 232.55,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 44,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10749,
+ "customerID": "ISLAT",
+ "employeeID": 4,
+ "orderDate": "1997-11-20 00:00:00.000",
+ "requiredDate": "1997-12-18 00:00:00.000",
+ "shippedDate": "1997-12-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 61.53,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10750,
+ "customerID": "WARTH",
+ "employeeID": 9,
+ "orderDate": "1997-11-21 00:00:00.000",
+ "requiredDate": "1997-12-19 00:00:00.000",
+ "shippedDate": "1997-11-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 79.3,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 5,
+ "discount": 0.15
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 25,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10751,
+ "customerID": "RICSU",
+ "employeeID": 3,
+ "orderDate": "1997-11-24 00:00:00.000",
+ "requiredDate": "1997-12-22 00:00:00.000",
+ "shippedDate": "1997-12-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 130.79,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 12,
+ "discount": 0.1
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 50,
+ "unitPrice": 16.25,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10752,
+ "customerID": "NORTS",
+ "employeeID": 2,
+ "orderDate": "1997-11-24 00:00:00.000",
+ "requiredDate": "1997-12-22 00:00:00.000",
+ "shippedDate": "1997-11-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.39,
+ "shipName": "North/South",
+ "shipAddress": {
+ "street": "South House 300 Queensbridge",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "SW7 1RZ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10753,
+ "customerID": "FRANS",
+ "employeeID": 3,
+ "orderDate": "1997-11-25 00:00:00.000",
+ "requiredDate": "1997-12-23 00:00:00.000",
+ "shippedDate": "1997-11-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 7.7,
+ "shipName": "Franchi S.p.A.",
+ "shipAddress": {
+ "street": "Via Monte Bianco 34",
+ "city": "Torino",
+ "region": "NULL",
+ "postalCode": 10100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 10,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10745,
+ "customerID": "QUICK",
+ "employeeID": 9,
+ "orderDate": "1997-11-18 00:00:00.000",
+ "requiredDate": "1997-12-16 00:00:00.000",
+ "shippedDate": "1997-11-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 3.52,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10755,
+ "customerID": "BONAP",
+ "employeeID": 4,
+ "orderDate": "1997-11-26 00:00:00.000",
+ "requiredDate": "1997-12-24 00:00:00.000",
+ "shippedDate": "1997-11-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 16.71,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 14,
+ "discount": 0.25
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 25,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10756,
+ "customerID": "SPLIR",
+ "employeeID": 8,
+ "orderDate": "1997-11-27 00:00:00.000",
+ "requiredDate": "1997-12-25 00:00:00.000",
+ "shippedDate": "1997-12-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 73.21,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 21,
+ "discount": 0.2
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 6,
+ "discount": 0.2
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10746,
+ "customerID": "CHOPS",
+ "employeeID": 1,
+ "orderDate": "1997-11-19 00:00:00.000",
+ "requiredDate": "1997-12-17 00:00:00.000",
+ "shippedDate": "1997-11-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 31.43,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10757,
+ "customerID": "SAVEA",
+ "employeeID": 6,
+ "orderDate": "1997-11-27 00:00:00.000",
+ "requiredDate": "1997-12-25 00:00:00.000",
+ "shippedDate": "1997-12-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.19,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10761,
+ "customerID": "RATTC",
+ "employeeID": 5,
+ "orderDate": "1997-12-02 00:00:00.000",
+ "requiredDate": "1997-12-30 00:00:00.000",
+ "shippedDate": "1997-12-08 00:00:00.000",
+ "shipVia": 2,
+ "freight": 18.66,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 35,
+ "discount": 0.25
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10762,
+ "customerID": "FOLKO",
+ "employeeID": 3,
+ "orderDate": "1997-12-02 00:00:00.000",
+ "requiredDate": "1997-12-30 00:00:00.000",
+ "shippedDate": "1997-12-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 328.74,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10763,
+ "customerID": "FOLIG",
+ "employeeID": 3,
+ "orderDate": "1997-12-03 00:00:00.000",
+ "requiredDate": "1997-12-31 00:00:00.000",
+ "shippedDate": "1997-12-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 37.35,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10764,
+ "customerID": "ERNSH",
+ "employeeID": 6,
+ "orderDate": "1997-12-03 00:00:00.000",
+ "requiredDate": "1997-12-31 00:00:00.000",
+ "shippedDate": "1997-12-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 145.45,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 130,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10766,
+ "customerID": "OTTIK",
+ "employeeID": 4,
+ "orderDate": "1997-12-05 00:00:00.000",
+ "requiredDate": "1998-01-02 00:00:00.000",
+ "shippedDate": "1997-12-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 157.55,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10760,
+ "customerID": "MAISD",
+ "employeeID": 4,
+ "orderDate": "1997-12-01 00:00:00.000",
+ "requiredDate": "1997-12-29 00:00:00.000",
+ "shippedDate": "1997-12-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 155.64,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10768,
+ "customerID": "AROUT",
+ "employeeID": 3,
+ "orderDate": "1997-12-08 00:00:00.000",
+ "requiredDate": "1998-01-05 00:00:00.000",
+ "shippedDate": "1997-12-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 146.32,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10759,
+ "customerID": "ANATR",
+ "employeeID": 3,
+ "orderDate": "1997-11-28 00:00:00.000",
+ "requiredDate": "1997-12-26 00:00:00.000",
+ "shippedDate": "1997-12-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 11.99,
+ "shipName": "Ana Trujillo Emparedados y helados",
+ "shipAddress": {
+ "street": "Avda. de la Constitución 2222",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5021,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10769,
+ "customerID": "VAFFE",
+ "employeeID": 3,
+ "orderDate": "1997-12-08 00:00:00.000",
+ "requiredDate": "1998-01-05 00:00:00.000",
+ "shippedDate": "1997-12-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 65.06,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10772,
+ "customerID": "LEHMS",
+ "employeeID": 3,
+ "orderDate": "1997-12-10 00:00:00.000",
+ "requiredDate": "1998-01-07 00:00:00.000",
+ "shippedDate": "1997-12-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 91.28,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10758,
+ "customerID": "RICSU",
+ "employeeID": 3,
+ "orderDate": "1997-11-28 00:00:00.000",
+ "requiredDate": "1997-12-26 00:00:00.000",
+ "shippedDate": "1997-12-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 138.17,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10773,
+ "customerID": "ERNSH",
+ "employeeID": 1,
+ "orderDate": "1997-12-11 00:00:00.000",
+ "requiredDate": "1998-01-08 00:00:00.000",
+ "shippedDate": "1997-12-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 96.43,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 33,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 70,
+ "discount": 0.2
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 7,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10775,
+ "customerID": "THECR",
+ "employeeID": 7,
+ "orderDate": "1997-12-12 00:00:00.000",
+ "requiredDate": "1998-01-09 00:00:00.000",
+ "shippedDate": "1997-12-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 20.25,
+ "shipName": "The Cracker Box",
+ "shipAddress": {
+ "street": "55 Grizzly Peak Rd.",
+ "city": "Butte",
+ "region": "MT",
+ "postalCode": 59801,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10774,
+ "customerID": "FOLKO",
+ "employeeID": 4,
+ "orderDate": "1997-12-11 00:00:00.000",
+ "requiredDate": "1997-12-25 00:00:00.000",
+ "shippedDate": "1997-12-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 48.2,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 2,
+ "discount": 0.25
+ },
+ {
+ "productID": 66,
+ "unitPrice": 17,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10779,
+ "customerID": "MORGK",
+ "employeeID": 3,
+ "orderDate": "1997-12-16 00:00:00.000",
+ "requiredDate": "1998-01-13 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.13,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10780,
+ "customerID": "LILAS",
+ "employeeID": 2,
+ "orderDate": "1997-12-16 00:00:00.000",
+ "requiredDate": "1997-12-30 00:00:00.000",
+ "shippedDate": "1997-12-25 00:00:00.000",
+ "shipVia": 1,
+ "freight": 42.13,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10781,
+ "customerID": "WARTH",
+ "employeeID": 2,
+ "orderDate": "1997-12-17 00:00:00.000",
+ "requiredDate": "1998-01-14 00:00:00.000",
+ "shippedDate": "1997-12-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 73.16,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 3,
+ "discount": 0.2
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 74,
+ "unitPrice": 10,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10783,
+ "customerID": "HANAR",
+ "employeeID": 4,
+ "orderDate": "1997-12-18 00:00:00.000",
+ "requiredDate": "1998-01-15 00:00:00.000",
+ "shippedDate": "1997-12-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 124.98,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10784,
+ "customerID": "MAGAA",
+ "employeeID": 4,
+ "orderDate": "1997-12-18 00:00:00.000",
+ "requiredDate": "1998-01-15 00:00:00.000",
+ "shippedDate": "1997-12-22 00:00:00.000",
+ "shipVia": 3,
+ "freight": 70.09,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 2,
+ "discount": 0.15
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10785,
+ "customerID": "GROSR",
+ "employeeID": 1,
+ "orderDate": "1997-12-18 00:00:00.000",
+ "requiredDate": "1998-01-15 00:00:00.000",
+ "shippedDate": "1997-12-24 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.51,
+ "shipName": "GROSELLA-Restaurante",
+ "shipAddress": {
+ "street": "5ª Ave. Los Palos Grandes",
+ "city": "Caracas",
+ "region": "DF",
+ "postalCode": 1081,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10786,
+ "customerID": "QUEEN",
+ "employeeID": 8,
+ "orderDate": "1997-12-19 00:00:00.000",
+ "requiredDate": "1998-01-16 00:00:00.000",
+ "shippedDate": "1997-12-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 110.87,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0.2
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 42,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10776,
+ "customerID": "ERNSH",
+ "employeeID": 1,
+ "orderDate": "1997-12-15 00:00:00.000",
+ "requiredDate": "1998-01-12 00:00:00.000",
+ "shippedDate": "1997-12-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 351.53,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 16,
+ "discount": 0.05
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 27,
+ "discount": 0.05
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 120,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10787,
+ "customerID": "LAMAI",
+ "employeeID": 2,
+ "orderDate": "1997-12-19 00:00:00.000",
+ "requiredDate": "1998-01-02 00:00:00.000",
+ "shippedDate": "1997-12-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 249.93,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10791,
+ "customerID": "FRANK",
+ "employeeID": 6,
+ "orderDate": "1997-12-23 00:00:00.000",
+ "requiredDate": "1998-01-20 00:00:00.000",
+ "shippedDate": "1998-01-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 16.85,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 14,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10792,
+ "customerID": "WOLZA",
+ "employeeID": 1,
+ "orderDate": "1997-12-23 00:00:00.000",
+ "requiredDate": "1998-01-20 00:00:00.000",
+ "shippedDate": "1997-12-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 23.79,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10793,
+ "customerID": "AROUT",
+ "employeeID": 3,
+ "orderDate": "1997-12-24 00:00:00.000",
+ "requiredDate": "1998-01-21 00:00:00.000",
+ "shippedDate": "1998-01-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.52,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10794,
+ "customerID": "QUEDE",
+ "employeeID": 6,
+ "orderDate": "1997-12-24 00:00:00.000",
+ "requiredDate": "1998-01-21 00:00:00.000",
+ "shippedDate": "1998-01-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 21.49,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 15,
+ "discount": 0.2
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 6,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10790,
+ "customerID": "GOURL",
+ "employeeID": 6,
+ "orderDate": "1997-12-22 00:00:00.000",
+ "requiredDate": "1998-01-19 00:00:00.000",
+ "shippedDate": "1997-12-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 28.23,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 3,
+ "discount": 0.15
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10796,
+ "customerID": "HILAA",
+ "employeeID": 3,
+ "orderDate": "1997-12-25 00:00:00.000",
+ "requiredDate": "1998-01-22 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 26.52,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 21,
+ "discount": 0.2
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 24,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10788,
+ "customerID": "QUICK",
+ "employeeID": 1,
+ "orderDate": "1997-12-22 00:00:00.000",
+ "requiredDate": "1998-01-19 00:00:00.000",
+ "shippedDate": "1998-01-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 42.7,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 50,
+ "discount": 0.05
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10789,
+ "customerID": "FOLIG",
+ "employeeID": 1,
+ "orderDate": "1997-12-22 00:00:00.000",
+ "requiredDate": "1998-01-19 00:00:00.000",
+ "shippedDate": "1997-12-31 00:00:00.000",
+ "shipVia": 2,
+ "freight": 100.6,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10800,
+ "customerID": "SEVES",
+ "employeeID": 1,
+ "orderDate": "1997-12-26 00:00:00.000",
+ "requiredDate": "1998-01-23 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 137.44,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 50,
+ "discount": 0.1
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 7,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10801,
+ "customerID": "BOLID",
+ "employeeID": 4,
+ "orderDate": "1997-12-29 00:00:00.000",
+ "requiredDate": "1998-01-26 00:00:00.000",
+ "shippedDate": "1997-12-31 00:00:00.000",
+ "shipVia": 2,
+ "freight": 97.09,
+ "shipName": "Bólido Comidas preparadas",
+ "shipAddress": {
+ "street": "C/ Araquil 67",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28023,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 20,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10795,
+ "customerID": "ERNSH",
+ "employeeID": 8,
+ "orderDate": "1997-12-24 00:00:00.000",
+ "requiredDate": "1998-01-21 00:00:00.000",
+ "shippedDate": "1998-01-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 126.66,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 65,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10798,
+ "customerID": "ISLAT",
+ "employeeID": 2,
+ "orderDate": "1997-12-26 00:00:00.000",
+ "requiredDate": "1998-01-23 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.33,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10799,
+ "customerID": "KOENE",
+ "employeeID": 9,
+ "orderDate": "1997-12-26 00:00:00.000",
+ "requiredDate": "1998-02-06 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 30.76,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10805,
+ "customerID": "THEBI",
+ "employeeID": 2,
+ "orderDate": "1997-12-30 00:00:00.000",
+ "requiredDate": "1998-01-27 00:00:00.000",
+ "shippedDate": "1998-01-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 237.34,
+ "shipName": "The Big Cheese",
+ "shipAddress": {
+ "street": "89 Jefferson Way Suite 2",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97201,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10802,
+ "customerID": "SIMOB",
+ "employeeID": 4,
+ "orderDate": "1997-12-29 00:00:00.000",
+ "requiredDate": "1998-01-26 00:00:00.000",
+ "shippedDate": "1998-01-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 257.26,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 25,
+ "discount": 0.25
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 60,
+ "discount": 0.25
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 5,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10803,
+ "customerID": "WELLI",
+ "employeeID": 4,
+ "orderDate": "1997-12-30 00:00:00.000",
+ "requiredDate": "1998-01-27 00:00:00.000",
+ "shippedDate": "1998-01-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.23,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 24,
+ "discount": 0.05
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10808,
+ "customerID": "OLDWO",
+ "employeeID": 2,
+ "orderDate": "1998-01-01 00:00:00.000",
+ "requiredDate": "1998-01-29 00:00:00.000",
+ "shippedDate": "1998-01-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 45.53,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 50,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10810,
+ "customerID": "LAUGB",
+ "employeeID": 2,
+ "orderDate": "1998-01-01 00:00:00.000",
+ "requiredDate": "1998-01-29 00:00:00.000",
+ "shippedDate": "1998-01-07 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.33,
+ "shipName": "Laughing Bacchus Wine Cellars",
+ "shipAddress": {
+ "street": "2319 Elm St.",
+ "city": "Vancouver",
+ "region": "BC",
+ "postalCode": "V3F 2K1",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10811,
+ "customerID": "LINOD",
+ "employeeID": 8,
+ "orderDate": "1998-01-02 00:00:00.000",
+ "requiredDate": "1998-01-30 00:00:00.000",
+ "shippedDate": "1998-01-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 31.22,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10804,
+ "customerID": "SEVES",
+ "employeeID": 6,
+ "orderDate": "1997-12-30 00:00:00.000",
+ "requiredDate": "1998-01-27 00:00:00.000",
+ "shippedDate": "1998-01-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 27.33,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 4,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10814,
+ "customerID": "VICTE",
+ "employeeID": 3,
+ "orderDate": "1998-01-05 00:00:00.000",
+ "requiredDate": "1998-02-02 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 130.94,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 48,
+ "unitPrice": 12.75,
+ "quantity": 8,
+ "discount": 0.15
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10812,
+ "customerID": "REGGC",
+ "employeeID": 5,
+ "orderDate": "1998-01-02 00:00:00.000",
+ "requiredDate": "1998-01-30 00:00:00.000",
+ "shippedDate": "1998-01-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 59.78,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 16,
+ "discount": 0.1
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10817,
+ "customerID": "KOENE",
+ "employeeID": 3,
+ "orderDate": "1998-01-06 00:00:00.000",
+ "requiredDate": "1998-01-20 00:00:00.000",
+ "shippedDate": "1998-01-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 306.07,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 60,
+ "discount": 0.15
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 25,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10806,
+ "customerID": "VICTE",
+ "employeeID": 3,
+ "orderDate": "1997-12-31 00:00:00.000",
+ "requiredDate": "1998-01-28 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 22.11,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 10,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10816,
+ "customerID": "GREAL",
+ "employeeID": 4,
+ "orderDate": "1998-01-06 00:00:00.000",
+ "requiredDate": "1998-02-03 00:00:00.000",
+ "shippedDate": "1998-02-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 719.78,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10813,
+ "customerID": "RICAR",
+ "employeeID": 1,
+ "orderDate": "1998-01-05 00:00:00.000",
+ "requiredDate": "1998-02-02 00:00:00.000",
+ "shippedDate": "1998-01-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 47.38,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10818,
+ "customerID": "MAGAA",
+ "employeeID": 7,
+ "orderDate": "1998-01-07 00:00:00.000",
+ "requiredDate": "1998-02-04 00:00:00.000",
+ "shippedDate": "1998-01-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 65.48,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10819,
+ "customerID": "CACTU",
+ "employeeID": 2,
+ "orderDate": "1998-01-07 00:00:00.000",
+ "requiredDate": "1998-02-04 00:00:00.000",
+ "shippedDate": "1998-01-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 19.76,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10821,
+ "customerID": "SPLIR",
+ "employeeID": 1,
+ "orderDate": "1998-01-08 00:00:00.000",
+ "requiredDate": "1998-02-05 00:00:00.000",
+ "shippedDate": "1998-01-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 36.68,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10822,
+ "customerID": "TRAIH",
+ "employeeID": 6,
+ "orderDate": "1998-01-08 00:00:00.000",
+ "requiredDate": "1998-02-05 00:00:00.000",
+ "shippedDate": "1998-01-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7,
+ "shipName": "Trail's Head Gourmet Provisioners",
+ "shipAddress": {
+ "street": "722 DaVinci Blvd.",
+ "city": "Kirkland",
+ "region": "WA",
+ "postalCode": 98034,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10823,
+ "customerID": "LILAS",
+ "employeeID": 5,
+ "orderDate": "1998-01-09 00:00:00.000",
+ "requiredDate": "1998-02-06 00:00:00.000",
+ "shippedDate": "1998-01-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 163.97,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10824,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1998-01-09 00:00:00.000",
+ "requiredDate": "1998-02-06 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.23,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10825,
+ "customerID": "DRACD",
+ "employeeID": 1,
+ "orderDate": "1998-01-09 00:00:00.000",
+ "requiredDate": "1998-02-06 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 79.25,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10826,
+ "customerID": "BLONP",
+ "employeeID": 6,
+ "orderDate": "1998-01-12 00:00:00.000",
+ "requiredDate": "1998-02-09 00:00:00.000",
+ "shippedDate": "1998-02-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 7.09,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10827,
+ "customerID": "BONAP",
+ "employeeID": 1,
+ "orderDate": "1998-01-12 00:00:00.000",
+ "requiredDate": "1998-01-26 00:00:00.000",
+ "shippedDate": "1998-02-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 63.54,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10828,
+ "customerID": "RANCH",
+ "employeeID": 9,
+ "orderDate": "1998-01-13 00:00:00.000",
+ "requiredDate": "1998-01-27 00:00:00.000",
+ "shippedDate": "1998-02-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 90.85,
+ "shipName": "Rancho grande",
+ "shipAddress": {
+ "street": "Av. del Libertador 900",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10829,
+ "customerID": "ISLAT",
+ "employeeID": 9,
+ "orderDate": "1998-01-13 00:00:00.000",
+ "requiredDate": "1998-02-10 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 154.72,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10830,
+ "customerID": "TRADH",
+ "employeeID": 4,
+ "orderDate": "1998-01-13 00:00:00.000",
+ "requiredDate": "1998-02-24 00:00:00.000",
+ "shippedDate": "1998-01-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 81.83,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10831,
+ "customerID": "SANTG",
+ "employeeID": 3,
+ "orderDate": "1998-01-14 00:00:00.000",
+ "requiredDate": "1998-02-11 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 72.19,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10832,
+ "customerID": "LAMAI",
+ "employeeID": 2,
+ "orderDate": "1998-01-14 00:00:00.000",
+ "requiredDate": "1998-02-11 00:00:00.000",
+ "shippedDate": "1998-01-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 43.26,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 3,
+ "discount": 0.2
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 16,
+ "discount": 0.2
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10833,
+ "customerID": "OTTIK",
+ "employeeID": 6,
+ "orderDate": "1998-01-15 00:00:00.000",
+ "requiredDate": "1998-02-12 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 71.49,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 9,
+ "discount": 0.1
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 9,
+ "discount": 0.1
+ },
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10834,
+ "customerID": "TRADH",
+ "employeeID": 1,
+ "orderDate": "1998-01-15 00:00:00.000",
+ "requiredDate": "1998-02-12 00:00:00.000",
+ "shippedDate": "1998-01-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 29.78,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 8,
+ "discount": 0.05
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10838,
+ "customerID": "LINOD",
+ "employeeID": 3,
+ "orderDate": "1998-01-19 00:00:00.000",
+ "requiredDate": "1998-02-16 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 59.28,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 4,
+ "discount": 0.25
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 25,
+ "discount": 0.25
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 50,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10839,
+ "customerID": "TRADH",
+ "employeeID": 3,
+ "orderDate": "1998-01-19 00:00:00.000",
+ "requiredDate": "1998-02-16 00:00:00.000",
+ "shippedDate": "1998-01-22 00:00:00.000",
+ "shipVia": 3,
+ "freight": 35.43,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10840,
+ "customerID": "LINOD",
+ "employeeID": 4,
+ "orderDate": "1998-01-19 00:00:00.000",
+ "requiredDate": "1998-03-02 00:00:00.000",
+ "shippedDate": "1998-02-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.71,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 6,
+ "discount": 0.2
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10841,
+ "customerID": "SUPRD",
+ "employeeID": 5,
+ "orderDate": "1998-01-20 00:00:00.000",
+ "requiredDate": "1998-02-17 00:00:00.000",
+ "shippedDate": "1998-01-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 424.3,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10842,
+ "customerID": "TORTU",
+ "employeeID": 1,
+ "orderDate": "1998-01-20 00:00:00.000",
+ "requiredDate": "1998-02-17 00:00:00.000",
+ "shippedDate": "1998-01-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 54.42,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10836,
+ "customerID": "ERNSH",
+ "employeeID": 7,
+ "orderDate": "1998-01-16 00:00:00.000",
+ "requiredDate": "1998-02-13 00:00:00.000",
+ "shippedDate": "1998-01-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 411.88,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 52,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10835,
+ "customerID": "ALFKI",
+ "employeeID": 1,
+ "orderDate": "1998-01-15 00:00:00.000",
+ "requiredDate": "1998-02-12 00:00:00.000",
+ "shippedDate": "1998-01-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 69.53,
+ "shipName": "Alfred's Futterkiste",
+ "shipAddress": {
+ "street": "Obere Str. 57",
+ "city": "Berlin",
+ "region": "NULL",
+ "postalCode": 12209,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 2,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10837,
+ "customerID": "BERGS",
+ "employeeID": 9,
+ "orderDate": "1998-01-16 00:00:00.000",
+ "requiredDate": "1998-02-13 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.32,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 40,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10845,
+ "customerID": "QUICK",
+ "employeeID": 8,
+ "orderDate": "1998-01-21 00:00:00.000",
+ "requiredDate": "1998-02-04 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 212.98,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 70,
+ "discount": 0.1
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 42,
+ "discount": 0.1
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 60,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 48,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10848,
+ "customerID": "CONSH",
+ "employeeID": 7,
+ "orderDate": "1998-01-23 00:00:00.000",
+ "requiredDate": "1998-02-20 00:00:00.000",
+ "shippedDate": "1998-01-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 38.24,
+ "shipName": "Consolidated Holdings",
+ "shipAddress": {
+ "street": "Berkeley Gardens 12 Brewery",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX1 6LT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 97,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 5,
+ "unitPrice": 21.35,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10850,
+ "customerID": "VICTE",
+ "employeeID": 1,
+ "orderDate": "1998-01-23 00:00:00.000",
+ "requiredDate": "1998-03-06 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 49.19,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 4,
+ "discount": 0.15
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10847,
+ "customerID": "SAVEA",
+ "employeeID": 4,
+ "orderDate": "1998-01-22 00:00:00.000",
+ "requiredDate": "1998-02-05 00:00:00.000",
+ "shippedDate": "1998-02-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 487.57,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 80,
+ "discount": 0.2
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 37,
+ "unitPrice": 26,
+ "quantity": 60,
+ "discount": 0.2
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 36,
+ "discount": 0.2
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 45,
+ "discount": 0.2
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 55,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10846,
+ "customerID": "SUPRD",
+ "employeeID": 2,
+ "orderDate": "1998-01-22 00:00:00.000",
+ "requiredDate": "1998-03-05 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 56.46,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10849,
+ "customerID": "KOENE",
+ "employeeID": 9,
+ "orderDate": "1998-01-23 00:00:00.000",
+ "requiredDate": "1998-02-20 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.56,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 49,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 18,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10851,
+ "customerID": "RICAR",
+ "employeeID": 5,
+ "orderDate": "1998-01-26 00:00:00.000",
+ "requiredDate": "1998-02-23 00:00:00.000",
+ "shippedDate": "1998-02-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 160.55,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 42,
+ "discount": 0.05
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 5,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10852,
+ "customerID": "RATTC",
+ "employeeID": 8,
+ "orderDate": "1998-01-26 00:00:00.000",
+ "requiredDate": "1998-02-09 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 174.05,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10854,
+ "customerID": "ERNSH",
+ "employeeID": 3,
+ "orderDate": "1998-01-27 00:00:00.000",
+ "requiredDate": "1998-02-24 00:00:00.000",
+ "shippedDate": "1998-02-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 100.22,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 100,
+ "discount": 0.15
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 65,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10855,
+ "customerID": "OLDWO",
+ "employeeID": 3,
+ "orderDate": "1998-01-27 00:00:00.000",
+ "requiredDate": "1998-02-24 00:00:00.000",
+ "shippedDate": "1998-02-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 170.97,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10856,
+ "customerID": "ANTON",
+ "employeeID": 3,
+ "orderDate": "1998-01-28 00:00:00.000",
+ "requiredDate": "1998-02-25 00:00:00.000",
+ "shippedDate": "1998-02-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.43,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10857,
+ "customerID": "BERGS",
+ "employeeID": 8,
+ "orderDate": "1998-01-28 00:00:00.000",
+ "requiredDate": "1998-02-25 00:00:00.000",
+ "shippedDate": "1998-02-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 188.85,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 35,
+ "discount": 0.25
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 10,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10858,
+ "customerID": "LACOR",
+ "employeeID": 2,
+ "orderDate": "1998-01-29 00:00:00.000",
+ "requiredDate": "1998-02-26 00:00:00.000",
+ "shippedDate": "1998-02-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 52.51,
+ "shipName": "La corne d'abondance",
+ "shipAddress": {
+ "street": "67 avenue de l'Europe",
+ "city": "Versailles",
+ "region": "NULL",
+ "postalCode": 78000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10859,
+ "customerID": "FRANK",
+ "employeeID": 1,
+ "orderDate": "1998-01-29 00:00:00.000",
+ "requiredDate": "1998-02-26 00:00:00.000",
+ "shippedDate": "1998-02-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 76.1,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 35,
+ "discount": 0.25
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10860,
+ "customerID": "FRANR",
+ "employeeID": 3,
+ "orderDate": "1998-01-29 00:00:00.000",
+ "requiredDate": "1998-02-26 00:00:00.000",
+ "shippedDate": "1998-02-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 19.26,
+ "shipName": "France restauration",
+ "shipAddress": {
+ "street": "54 rue Royale",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10861,
+ "customerID": "WHITC",
+ "employeeID": 4,
+ "orderDate": "1998-01-30 00:00:00.000",
+ "requiredDate": "1998-02-27 00:00:00.000",
+ "shippedDate": "1998-02-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 14.93,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10862,
+ "customerID": "LEHMS",
+ "employeeID": 8,
+ "orderDate": "1998-01-30 00:00:00.000",
+ "requiredDate": "1998-03-13 00:00:00.000",
+ "shippedDate": "1998-02-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 53.23,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10863,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1998-02-02 00:00:00.000",
+ "requiredDate": "1998-03-02 00:00:00.000",
+ "shippedDate": "1998-02-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 30.26,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 12,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10864,
+ "customerID": "AROUT",
+ "employeeID": 4,
+ "orderDate": "1998-02-02 00:00:00.000",
+ "requiredDate": "1998-03-02 00:00:00.000",
+ "shippedDate": "1998-02-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.04,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10865,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1998-02-02 00:00:00.000",
+ "requiredDate": "1998-02-16 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 348.14,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 80,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10869,
+ "customerID": "SEVES",
+ "employeeID": 5,
+ "orderDate": "1998-02-04 00:00:00.000",
+ "requiredDate": "1998-03-04 00:00:00.000",
+ "shippedDate": "1998-02-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 143.28,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10870,
+ "customerID": "WOLZA",
+ "employeeID": 5,
+ "orderDate": "1998-02-04 00:00:00.000",
+ "requiredDate": "1998-03-04 00:00:00.000",
+ "shippedDate": "1998-02-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 12.04,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10871,
+ "customerID": "BONAP",
+ "employeeID": 9,
+ "orderDate": "1998-02-05 00:00:00.000",
+ "requiredDate": "1998-03-05 00:00:00.000",
+ "shippedDate": "1998-02-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 112.27,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 50,
+ "discount": 0.05
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 16,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10872,
+ "customerID": "GODOS",
+ "employeeID": 5,
+ "orderDate": "1998-02-05 00:00:00.000",
+ "requiredDate": "1998-03-05 00:00:00.000",
+ "shippedDate": "1998-02-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 175.32,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 21,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10873,
+ "customerID": "WILMK",
+ "employeeID": 4,
+ "orderDate": "1998-02-06 00:00:00.000",
+ "requiredDate": "1998-03-06 00:00:00.000",
+ "shippedDate": "1998-02-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.82,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10866,
+ "customerID": "BERGS",
+ "employeeID": 5,
+ "orderDate": "1998-02-03 00:00:00.000",
+ "requiredDate": "1998-03-03 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 109.11,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 6,
+ "discount": 0.25
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 40,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10876,
+ "customerID": "BONAP",
+ "employeeID": 7,
+ "orderDate": "1998-02-09 00:00:00.000",
+ "requiredDate": "1998-03-09 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 60.42,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10877,
+ "customerID": "RICAR",
+ "employeeID": 1,
+ "orderDate": "1998-02-09 00:00:00.000",
+ "requiredDate": "1998-03-09 00:00:00.000",
+ "shippedDate": "1998-02-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 38.06,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10868,
+ "customerID": "QUEEN",
+ "employeeID": 7,
+ "orderDate": "1998-02-04 00:00:00.000",
+ "requiredDate": "1998-03-04 00:00:00.000",
+ "shippedDate": "1998-02-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 191.27,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 42,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10875,
+ "customerID": "BERGS",
+ "employeeID": 4,
+ "orderDate": "1998-02-06 00:00:00.000",
+ "requiredDate": "1998-03-06 00:00:00.000",
+ "shippedDate": "1998-03-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 32.37,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 21,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10882,
+ "customerID": "SAVEA",
+ "employeeID": 4,
+ "orderDate": "1998-02-11 00:00:00.000",
+ "requiredDate": "1998-03-11 00:00:00.000",
+ "shippedDate": "1998-02-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 23.1,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 32,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10884,
+ "customerID": "LETSS",
+ "employeeID": 4,
+ "orderDate": "1998-02-12 00:00:00.000",
+ "requiredDate": "1998-03-12 00:00:00.000",
+ "shippedDate": "1998-02-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 90.97,
+ "shipName": "Let's Stop N Shop",
+ "shipAddress": {
+ "street": "87 Polk St. Suite 5",
+ "city": "San Francisco",
+ "region": "CA",
+ "postalCode": 94117,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 21,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10885,
+ "customerID": "SUPRD",
+ "employeeID": 6,
+ "orderDate": "1998-02-12 00:00:00.000",
+ "requiredDate": "1998-03-12 00:00:00.000",
+ "shippedDate": "1998-02-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 5.64,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10886,
+ "customerID": "HANAR",
+ "employeeID": 1,
+ "orderDate": "1998-02-13 00:00:00.000",
+ "requiredDate": "1998-03-13 00:00:00.000",
+ "shippedDate": "1998-03-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.99,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 70,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10880,
+ "customerID": "FOLKO",
+ "employeeID": 7,
+ "orderDate": "1998-02-10 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-02-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 88.01,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10879,
+ "customerID": "WILMK",
+ "employeeID": 3,
+ "orderDate": "1998-02-10 00:00:00.000",
+ "requiredDate": "1998-03-10 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 8.5,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10889,
+ "customerID": "RATTC",
+ "employeeID": 9,
+ "orderDate": "1998-02-16 00:00:00.000",
+ "requiredDate": "1998-03-16 00:00:00.000",
+ "shippedDate": "1998-02-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 280.61,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10890,
+ "customerID": "DUMON",
+ "employeeID": 7,
+ "orderDate": "1998-02-16 00:00:00.000",
+ "requiredDate": "1998-03-16 00:00:00.000",
+ "shippedDate": "1998-02-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 32.76,
+ "shipName": "Du monde entier",
+ "shipAddress": {
+ "street": "67 rue des Cinquante Otages",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10893,
+ "customerID": "KOENE",
+ "employeeID": 9,
+ "orderDate": "1998-02-18 00:00:00.000",
+ "requiredDate": "1998-03-18 00:00:00.000",
+ "shippedDate": "1998-02-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 77.78,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10894,
+ "customerID": "SAVEA",
+ "employeeID": 1,
+ "orderDate": "1998-02-18 00:00:00.000",
+ "requiredDate": "1998-03-18 00:00:00.000",
+ "shippedDate": "1998-02-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 116.13,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 28,
+ "discount": 0.05
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 50,
+ "discount": 0.05
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 120,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10888,
+ "customerID": "GODOS",
+ "employeeID": 1,
+ "orderDate": "1998-02-16 00:00:00.000",
+ "requiredDate": "1998-03-16 00:00:00.000",
+ "shippedDate": "1998-02-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 51.87,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10898,
+ "customerID": "OCEAN",
+ "employeeID": 4,
+ "orderDate": "1998-02-20 00:00:00.000",
+ "requiredDate": "1998-03-20 00:00:00.000",
+ "shippedDate": "1998-03-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.27,
+ "shipName": "Océano Atlántico Ltda.",
+ "shipAddress": {
+ "street": "Ing. Gustavo Moncada 8585 Piso 20-A",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10899,
+ "customerID": "LILAS",
+ "employeeID": 5,
+ "orderDate": "1998-02-20 00:00:00.000",
+ "requiredDate": "1998-03-20 00:00:00.000",
+ "shippedDate": "1998-02-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.21,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 8,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10901,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1998-02-23 00:00:00.000",
+ "requiredDate": "1998-03-23 00:00:00.000",
+ "shippedDate": "1998-02-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 62.09,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10902,
+ "customerID": "FOLKO",
+ "employeeID": 1,
+ "orderDate": "1998-02-23 00:00:00.000",
+ "requiredDate": "1998-03-23 00:00:00.000",
+ "shippedDate": "1998-03-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 44.15,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 30,
+ "discount": 0.15
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 6,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10903,
+ "customerID": "HANAR",
+ "employeeID": 3,
+ "orderDate": "1998-02-24 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 36.71,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10896,
+ "customerID": "MAISD",
+ "employeeID": 7,
+ "orderDate": "1998-02-19 00:00:00.000",
+ "requiredDate": "1998-03-19 00:00:00.000",
+ "shippedDate": "1998-02-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 32.45,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10904,
+ "customerID": "WHITC",
+ "employeeID": 3,
+ "orderDate": "1998-02-24 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-02-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 162.95,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10895,
+ "customerID": "ERNSH",
+ "employeeID": 3,
+ "orderDate": "1998-02-18 00:00:00.000",
+ "requiredDate": "1998-03-18 00:00:00.000",
+ "shippedDate": "1998-02-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 162.75,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 91,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 100,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 110,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 45,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10897,
+ "customerID": "HUNGO",
+ "employeeID": 3,
+ "orderDate": "1998-02-19 00:00:00.000",
+ "requiredDate": "1998-03-19 00:00:00.000",
+ "shippedDate": "1998-02-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 603.54,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 80,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 36,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10909,
+ "customerID": "SANTG",
+ "employeeID": 1,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 53.05,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10910,
+ "customerID": "WILMK",
+ "employeeID": 1,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 38.11,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10911,
+ "customerID": "GODOS",
+ "employeeID": 3,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 38.19,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10912,
+ "customerID": "HUNGO",
+ "employeeID": 2,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 580.91,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 60,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10913,
+ "customerID": "QUEEN",
+ "employeeID": 4,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 33.05,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10917,
+ "customerID": "ROMEY",
+ "employeeID": 4,
+ "orderDate": "1998-03-02 00:00:00.000",
+ "requiredDate": "1998-03-30 00:00:00.000",
+ "shippedDate": "1998-03-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.29,
+ "shipName": "Romero y tomillo",
+ "shipAddress": {
+ "street": "Gran Vía 1",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28001,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 1,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10916,
+ "customerID": "RANCH",
+ "employeeID": 1,
+ "orderDate": "1998-02-27 00:00:00.000",
+ "requiredDate": "1998-03-27 00:00:00.000",
+ "shippedDate": "1998-03-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 63.77,
+ "shipName": "Rancho grande",
+ "shipAddress": {
+ "street": "Av. del Libertador 900",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10918,
+ "customerID": "BOTTM",
+ "employeeID": 3,
+ "orderDate": "1998-03-02 00:00:00.000",
+ "requiredDate": "1998-03-30 00:00:00.000",
+ "shippedDate": "1998-03-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 48.83,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 60,
+ "discount": 0.25
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 25,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10919,
+ "customerID": "LINOD",
+ "employeeID": 2,
+ "orderDate": "1998-03-02 00:00:00.000",
+ "requiredDate": "1998-03-30 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 19.8,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10908,
+ "customerID": "REGGC",
+ "employeeID": 4,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 32.96,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 14,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10921,
+ "customerID": "VAFFE",
+ "employeeID": 1,
+ "orderDate": "1998-03-03 00:00:00.000",
+ "requiredDate": "1998-04-14 00:00:00.000",
+ "shippedDate": "1998-03-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 176.48,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10915,
+ "customerID": "TORTU",
+ "employeeID": 2,
+ "orderDate": "1998-02-27 00:00:00.000",
+ "requiredDate": "1998-03-27 00:00:00.000",
+ "shippedDate": "1998-03-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.51,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10925,
+ "customerID": "HANAR",
+ "employeeID": 3,
+ "orderDate": "1998-03-04 00:00:00.000",
+ "requiredDate": "1998-04-01 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.27,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 25,
+ "discount": 0.15
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 12,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10926,
+ "customerID": "ANATR",
+ "employeeID": 4,
+ "orderDate": "1998-03-04 00:00:00.000",
+ "requiredDate": "1998-04-01 00:00:00.000",
+ "shippedDate": "1998-03-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 39.92,
+ "shipName": "Ana Trujillo Emparedados y helados",
+ "shipAddress": {
+ "street": "Avda. de la Constitución 2222",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5021,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10927,
+ "customerID": "LACOR",
+ "employeeID": 4,
+ "orderDate": "1998-03-05 00:00:00.000",
+ "requiredDate": "1998-04-02 00:00:00.000",
+ "shippedDate": "1998-04-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 19.79,
+ "shipName": "La corne d'abondance",
+ "shipAddress": {
+ "street": "67 avenue de l'Europe",
+ "city": "Versailles",
+ "region": "NULL",
+ "postalCode": 78000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10928,
+ "customerID": "GALED",
+ "employeeID": 1,
+ "orderDate": "1998-03-05 00:00:00.000",
+ "requiredDate": "1998-04-02 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.36,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10929,
+ "customerID": "FRANK",
+ "employeeID": 6,
+ "orderDate": "1998-03-05 00:00:00.000",
+ "requiredDate": "1998-04-02 00:00:00.000",
+ "shippedDate": "1998-03-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 33.93,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 49,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10930,
+ "customerID": "SUPRD",
+ "employeeID": 4,
+ "orderDate": "1998-03-06 00:00:00.000",
+ "requiredDate": "1998-04-17 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 15.55,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 36,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10931,
+ "customerID": "RICSU",
+ "employeeID": 4,
+ "orderDate": "1998-03-06 00:00:00.000",
+ "requiredDate": "1998-03-20 00:00:00.000",
+ "shippedDate": "1998-03-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.6,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 42,
+ "discount": 0.15
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10932,
+ "customerID": "BONAP",
+ "employeeID": 8,
+ "orderDate": "1998-03-06 00:00:00.000",
+ "requiredDate": "1998-04-03 00:00:00.000",
+ "shippedDate": "1998-03-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 134.64,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 14,
+ "discount": 0.1
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10933,
+ "customerID": "ISLAT",
+ "employeeID": 6,
+ "orderDate": "1998-03-06 00:00:00.000",
+ "requiredDate": "1998-04-03 00:00:00.000",
+ "shippedDate": "1998-03-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 54.15,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10935,
+ "customerID": "WELLI",
+ "employeeID": 4,
+ "orderDate": "1998-03-09 00:00:00.000",
+ "requiredDate": "1998-04-06 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 47.59,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 4,
+ "discount": 0.25
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 8,
+ "discount": 0.25
+ },
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10937,
+ "customerID": "CACTU",
+ "employeeID": 7,
+ "orderDate": "1998-03-10 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 31.51,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10938,
+ "customerID": "QUICK",
+ "employeeID": 3,
+ "orderDate": "1998-03-10 00:00:00.000",
+ "requiredDate": "1998-04-07 00:00:00.000",
+ "shippedDate": "1998-03-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 31.89,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 24,
+ "discount": 0.25
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 49,
+ "discount": 0.25
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10939,
+ "customerID": "MAGAA",
+ "employeeID": 2,
+ "orderDate": "1998-03-10 00:00:00.000",
+ "requiredDate": "1998-04-07 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 76.33,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 10,
+ "discount": 0.15
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 40,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10940,
+ "customerID": "BONAP",
+ "employeeID": 8,
+ "orderDate": "1998-03-11 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-03-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 19.77,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10941,
+ "customerID": "SAVEA",
+ "employeeID": 7,
+ "orderDate": "1998-03-11 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-03-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 400.81,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 44,
+ "discount": 0.25
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 80,
+ "discount": 0.25
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10922,
+ "customerID": "HANAR",
+ "employeeID": 5,
+ "orderDate": "1998-03-03 00:00:00.000",
+ "requiredDate": "1998-03-31 00:00:00.000",
+ "shippedDate": "1998-03-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 62.74,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10923,
+ "customerID": "LAMAI",
+ "employeeID": 7,
+ "orderDate": "1998-03-03 00:00:00.000",
+ "requiredDate": "1998-04-14 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 68.26,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 24,
+ "discount": 0.2
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10924,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1998-03-04 00:00:00.000",
+ "requiredDate": "1998-04-01 00:00:00.000",
+ "shippedDate": "1998-04-08 00:00:00.000",
+ "shipVia": 2,
+ "freight": 151.52,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10943,
+ "customerID": "BSBEV",
+ "employeeID": 4,
+ "orderDate": "1998-03-11 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-03-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.17,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10944,
+ "customerID": "BOTTM",
+ "employeeID": 6,
+ "orderDate": "1998-03-12 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 52.92,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 5,
+ "discount": 0.25
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 18,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10945,
+ "customerID": "MORGK",
+ "employeeID": 4,
+ "orderDate": "1998-03-12 00:00:00.000",
+ "requiredDate": "1998-04-09 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 10.22,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ }
+]
diff --git a/vue-options-api-demos/grid/print/control-column-widths/main.js b/vue-options-api-demos/grid/print/control-column-widths/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/print/control-column-widths/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/print/control-column-widths/main.vue b/vue-options-api-demos/grid/print/control-column-widths/main.vue
new file mode 100644
index 00000000..bed24fdf
--- /dev/null
+++ b/vue-options-api-demos/grid/print/control-column-widths/main.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/print/control-column-widths/products.json b/vue-options-api-demos/grid/print/control-column-widths/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/grid/print/control-column-widths/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/grid/print/pageable/main.js b/vue-options-api-demos/grid/print/pageable/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/print/pageable/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/print/pageable/main.vue b/vue-options-api-demos/grid/print/pageable/main.vue
new file mode 100644
index 00000000..3446ab0b
--- /dev/null
+++ b/vue-options-api-demos/grid/print/pageable/main.vue
@@ -0,0 +1,150 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/print/scrollable-controlled/main.js b/vue-options-api-demos/grid/print/scrollable-controlled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/print/scrollable-controlled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/print/scrollable-controlled/main.vue b/vue-options-api-demos/grid/print/scrollable-controlled/main.vue
new file mode 100644
index 00000000..30a3b8ab
--- /dev/null
+++ b/vue-options-api-demos/grid/print/scrollable-controlled/main.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
+
Select Columns to Print
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/print/scrollable-controlled/products.json b/vue-options-api-demos/grid/print/scrollable-controlled/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/grid/print/scrollable-controlled/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/grid/print/scrollable/main.js b/vue-options-api-demos/grid/print/scrollable/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/print/scrollable/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/print/scrollable/main.vue b/vue-options-api-demos/grid/print/scrollable/main.vue
new file mode 100644
index 00000000..99849aff
--- /dev/null
+++ b/vue-options-api-demos/grid/print/scrollable/main.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/responsive-columns/basic/main.js b/vue-options-api-demos/grid/responsive-columns/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/responsive-columns/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/responsive-columns/basic/main.vue b/vue-options-api-demos/grid/responsive-columns/basic/main.vue
new file mode 100644
index 00000000..0f91fd52
--- /dev/null
+++ b/vue-options-api-demos/grid/responsive-columns/basic/main.vue
@@ -0,0 +1,67 @@
+
+
+ Toggle ProductName Visibility
+ Toggle CategoryName Visibility
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/responsive-columns/basic/products.json b/vue-options-api-demos/grid/responsive-columns/basic/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/grid/responsive-columns/basic/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/grid/responsive-columns/column-virtualization/main.js b/vue-options-api-demos/grid/responsive-columns/column-virtualization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/responsive-columns/column-virtualization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/responsive-columns/column-virtualization/main.vue b/vue-options-api-demos/grid/responsive-columns/column-virtualization/main.vue
new file mode 100644
index 00000000..0871449d
--- /dev/null
+++ b/vue-options-api-demos/grid/responsive-columns/column-virtualization/main.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/responsive-columns/height/main.js b/vue-options-api-demos/grid/responsive-columns/height/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/responsive-columns/height/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/responsive-columns/height/main.vue b/vue-options-api-demos/grid/responsive-columns/height/main.vue
new file mode 100644
index 00000000..bec031cf
--- /dev/null
+++ b/vue-options-api-demos/grid/responsive-columns/height/main.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.js b/vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.vue b/vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.vue
new file mode 100644
index 00000000..9cbf0d7c
--- /dev/null
+++ b/vue-options-api-demos/grid/responsive-columns/multicolumn-grid/main.vue
@@ -0,0 +1,117 @@
+
+ Toggle Category Visibility
+ Toggle CategoryName Visibility
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/rowreorder/component/CustomCell.vue b/vue-options-api-demos/grid/rowreorder/component/CustomCell.vue
new file mode 100644
index 00000000..5974d9a0
--- /dev/null
+++ b/vue-options-api-demos/grid/rowreorder/component/CustomCell.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+ {{ getNestedValue(field, dataItem) }}
+
+
+
diff --git a/vue-options-api-demos/grid/rowreorder/component/DragClue.vue b/vue-options-api-demos/grid/rowreorder/component/DragClue.vue
new file mode 100644
index 00000000..3d2f4f46
--- /dev/null
+++ b/vue-options-api-demos/grid/rowreorder/component/DragClue.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+ {{ dataItem.ProductID }}
+
+
+ {{ dataItem.ProductName }}
+
+
+ {{ dataItem.UnitPrice }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/rowreorder/component/DragPointer.vue b/vue-options-api-demos/grid/rowreorder/component/DragPointer.vue
new file mode 100644
index 00000000..8dccb927
--- /dev/null
+++ b/vue-options-api-demos/grid/rowreorder/component/DragPointer.vue
@@ -0,0 +1,15 @@
+
+
+
+
diff --git a/vue-options-api-demos/grid/rowreorder/component/common.js b/vue-options-api-demos/grid/rowreorder/component/common.js
new file mode 100644
index 00000000..b218ca35
--- /dev/null
+++ b/vue-options-api-demos/grid/rowreorder/component/common.js
@@ -0,0 +1,84 @@
+export function reorderData(event, items, activeItem, dropPosition) {
+ const dropItemProductID = getDroppedProductID(event.originalEvent.target);
+ let reorderedData = items;
+
+ if (dropItemProductID) {
+ const activeItemIndex = reorderedData.findIndex(
+ i => i.ProductID === activeItem.ProductID
+ );
+ const hoveredItemIndex = reorderedData.findIndex(
+ i => i.ProductID === dropItemProductID
+ );
+
+ if (activeItemIndex !== hoveredItemIndex) {
+ reorderedData.splice(activeItemIndex, 1);
+
+ if (
+ dropPosition === 'above' &&
+ hoveredItemIndex !== 0 &&
+ hoveredItemIndex < activeItemIndex
+ ) {
+ reorderedData.splice(hoveredItemIndex, 0, {
+ ...activeItem
+ });
+ } else if (dropPosition === 'above' && hoveredItemIndex === 0) {
+ reorderedData.unshift({ ...activeItem });
+ } else if (
+ dropPosition === 'above' &&
+ hoveredItemIndex !== 0 &&
+ hoveredItemIndex > activeItemIndex
+ ) {
+ reorderedData.splice(hoveredItemIndex - 1, 0, {
+ ...activeItem
+ });
+ } else if (
+ dropPosition === 'below' &&
+ hoveredItemIndex !== 0 &&
+ hoveredItemIndex < activeItemIndex
+ ) {
+ reorderedData.splice(hoveredItemIndex + 1, 0, {
+ ...activeItem
+ });
+ } else if (
+ dropPosition === 'below' &&
+ hoveredItemIndex !== 0 &&
+ hoveredItemIndex > activeItemIndex
+ ) {
+ reorderedData.splice(hoveredItemIndex, 0, {
+ ...activeItem
+ });
+ }
+ }
+ }
+
+ return reorderedData;
+}
+
+export function getDroppedProductID(target) {
+ if (target.getAttribute('data-itemid')) {
+ return parseInt(target.getAttribute('data-itemid'), 10);
+ } else {
+ if (target.parentElement) {
+ return getDroppedProductID(target.parentElement);
+ } else {
+ return false;
+ }
+ }
+}
+
+export function getTargetTopOffSet(event) {
+ if (
+ event.originalEvent.target.className !== 'k-drop-hint-line' &&
+ event.originalEvent.target.className !== 'k-drop-hint k-drop-hint-h'
+ ) {
+ return event.offsetY >=
+ event.originalEvent.target.parentElement.clientHeight / 2
+ ? event.originalEvent.target.parentElement.offsetTop +
+ document.querySelector('.k-grid-header').offsetHeight +
+ document.querySelector('.k-grid').offsetTop +
+ event.originalEvent.target.parentElement.clientHeight
+ : event.originalEvent.target.parentElement.offsetTop +
+ document.querySelector('.k-grid-header').offsetHeight +
+ document.querySelector('.k-grid').offsetTop;
+ }
+}
diff --git a/vue-options-api-demos/grid/rowreorder/component/main.js b/vue-options-api-demos/grid/rowreorder/component/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/rowreorder/component/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/rowreorder/component/main.vue b/vue-options-api-demos/grid/rowreorder/component/main.vue
new file mode 100644
index 00000000..b7f5847e
--- /dev/null
+++ b/vue-options-api-demos/grid/rowreorder/component/main.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/rowreorder/css/CustomCell.vue b/vue-options-api-demos/grid/rowreorder/css/CustomCell.vue
new file mode 100644
index 00000000..55291127
--- /dev/null
+++ b/vue-options-api-demos/grid/rowreorder/css/CustomCell.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+ {{ getNestedValue(field, dataItem) }}
+
+
+
+
diff --git a/vue-options-api-demos/grid/rowreorder/css/DragClue.vue b/vue-options-api-demos/grid/rowreorder/css/DragClue.vue
new file mode 100644
index 00000000..3d2f4f46
--- /dev/null
+++ b/vue-options-api-demos/grid/rowreorder/css/DragClue.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+ {{ dataItem.ProductID }}
+
+
+ {{ dataItem.ProductName }}
+
+
+ {{ dataItem.UnitPrice }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/rowreorder/css/common.js b/vue-options-api-demos/grid/rowreorder/css/common.js
new file mode 100644
index 00000000..b218ca35
--- /dev/null
+++ b/vue-options-api-demos/grid/rowreorder/css/common.js
@@ -0,0 +1,84 @@
+export function reorderData(event, items, activeItem, dropPosition) {
+ const dropItemProductID = getDroppedProductID(event.originalEvent.target);
+ let reorderedData = items;
+
+ if (dropItemProductID) {
+ const activeItemIndex = reorderedData.findIndex(
+ i => i.ProductID === activeItem.ProductID
+ );
+ const hoveredItemIndex = reorderedData.findIndex(
+ i => i.ProductID === dropItemProductID
+ );
+
+ if (activeItemIndex !== hoveredItemIndex) {
+ reorderedData.splice(activeItemIndex, 1);
+
+ if (
+ dropPosition === 'above' &&
+ hoveredItemIndex !== 0 &&
+ hoveredItemIndex < activeItemIndex
+ ) {
+ reorderedData.splice(hoveredItemIndex, 0, {
+ ...activeItem
+ });
+ } else if (dropPosition === 'above' && hoveredItemIndex === 0) {
+ reorderedData.unshift({ ...activeItem });
+ } else if (
+ dropPosition === 'above' &&
+ hoveredItemIndex !== 0 &&
+ hoveredItemIndex > activeItemIndex
+ ) {
+ reorderedData.splice(hoveredItemIndex - 1, 0, {
+ ...activeItem
+ });
+ } else if (
+ dropPosition === 'below' &&
+ hoveredItemIndex !== 0 &&
+ hoveredItemIndex < activeItemIndex
+ ) {
+ reorderedData.splice(hoveredItemIndex + 1, 0, {
+ ...activeItem
+ });
+ } else if (
+ dropPosition === 'below' &&
+ hoveredItemIndex !== 0 &&
+ hoveredItemIndex > activeItemIndex
+ ) {
+ reorderedData.splice(hoveredItemIndex, 0, {
+ ...activeItem
+ });
+ }
+ }
+ }
+
+ return reorderedData;
+}
+
+export function getDroppedProductID(target) {
+ if (target.getAttribute('data-itemid')) {
+ return parseInt(target.getAttribute('data-itemid'), 10);
+ } else {
+ if (target.parentElement) {
+ return getDroppedProductID(target.parentElement);
+ } else {
+ return false;
+ }
+ }
+}
+
+export function getTargetTopOffSet(event) {
+ if (
+ event.originalEvent.target.className !== 'k-drop-hint-line' &&
+ event.originalEvent.target.className !== 'k-drop-hint k-drop-hint-h'
+ ) {
+ return event.offsetY >=
+ event.originalEvent.target.parentElement.clientHeight / 2
+ ? event.originalEvent.target.parentElement.offsetTop +
+ document.querySelector('.k-grid-header').offsetHeight +
+ document.querySelector('.k-grid').offsetTop +
+ event.originalEvent.target.parentElement.clientHeight
+ : event.originalEvent.target.parentElement.offsetTop +
+ document.querySelector('.k-grid-header').offsetHeight +
+ document.querySelector('.k-grid').offsetTop;
+ }
+}
diff --git a/vue-options-api-demos/grid/rowreorder/css/main.js b/vue-options-api-demos/grid/rowreorder/css/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/rowreorder/css/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/rowreorder/css/main.vue b/vue-options-api-demos/grid/rowreorder/css/main.vue
new file mode 100644
index 00000000..c5b355eb
--- /dev/null
+++ b/vue-options-api-demos/grid/rowreorder/css/main.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/rows/sticky/main.js b/vue-options-api-demos/grid/rows/sticky/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/rows/sticky/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/rows/sticky/main.vue b/vue-options-api-demos/grid/rows/sticky/main.vue
new file mode 100644
index 00000000..e406a346
--- /dev/null
+++ b/vue-options-api-demos/grid/rows/sticky/main.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+ {{ getNestedValue(props.field, props.dataItem) }}
+
+
+ {{ getNestedValue(props.field, props.dataItem) }}
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/rows/sticky/products.json b/vue-options-api-demos/grid/rows/sticky/products.json
new file mode 100644
index 00000000..5f03285c
--- /dev/null
+++ b/vue-options-api-demos/grid/rows/sticky/products.json
@@ -0,0 +1,1312 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.35,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31.0,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "1 kg pkg.",
+ "UnitPrice": 21.0,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 30,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "SupplierID": 5,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 38.0,
+ "UnitsInStock": 86,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "CategoryID": 8,
+ "QuantityPerUnit": "2 kg box",
+ "UnitPrice": 6.0,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "SupplierID": 6,
+ "CategoryID": 7,
+ "QuantityPerUnit": "40 - 100 g pkgs.",
+ "UnitPrice": 23.25,
+ "UnitsInStock": 35,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "SupplierID": 6,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 250 ml bottles",
+ "UnitPrice": 15.5,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "SupplierID": 7,
+ "CategoryID": 3,
+ "QuantityPerUnit": "32 - 500 g boxes",
+ "UnitPrice": 17.45,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "SupplierID": 7,
+ "CategoryID": 6,
+ "QuantityPerUnit": "20 - 1 kg tins",
+ "UnitPrice": 39.0,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "SupplierID": 7,
+ "CategoryID": 8,
+ "QuantityPerUnit": "16 kg pkg.",
+ "UnitPrice": 62.5,
+ "UnitsInStock": 42,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 12 pieces",
+ "UnitPrice": 9.2,
+ "UnitsInStock": 25,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "30 gift boxes",
+ "UnitPrice": 81.0,
+ "UnitsInStock": 40,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 21,
+ "ProductName": "Sir Rodney's Scones",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 pkgs. x 4 pieces",
+ "UnitPrice": 10.0,
+ "UnitsInStock": 3,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 22,
+ "ProductName": "Gustaf's Knäckebröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 500 g pkgs.",
+ "UnitPrice": 21.0,
+ "UnitsInStock": 104,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 23,
+ "ProductName": "Tunnbröd",
+ "SupplierID": 9,
+ "CategoryID": 5,
+ "QuantityPerUnit": "12 - 250 g pkgs.",
+ "UnitPrice": 9.0,
+ "UnitsInStock": 61,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 24,
+ "ProductName": "Guaraná Fantástica",
+ "SupplierID": 10,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 355 ml cans",
+ "UnitPrice": 4.5,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 25,
+ "ProductName": "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "20 - 450 g glasses",
+ "UnitPrice": 14.0,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 26,
+ "ProductName": "Gumbär Gummibärchen",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 250 g bags",
+ "UnitPrice": 31.23,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 27,
+ "ProductName": "Schoggi Schokolade",
+ "SupplierID": 11,
+ "CategoryID": 3,
+ "QuantityPerUnit": "100 - 100 g pieces",
+ "UnitPrice": 43.9,
+ "UnitsInStock": 49,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 28,
+ "ProductName": "Rössle Sauerkraut",
+ "SupplierID": 12,
+ "CategoryID": 7,
+ "QuantityPerUnit": "25 - 825 g cans",
+ "UnitPrice": 45.6,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 29,
+ "ProductName": "Thüringer Rostbratwurst",
+ "SupplierID": 12,
+ "CategoryID": 6,
+ "QuantityPerUnit": "50 bags x 30 sausgs.",
+ "UnitPrice": 123.79,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 30,
+ "ProductName": "Nord-Ost Matjeshering",
+ "SupplierID": 13,
+ "CategoryID": 8,
+ "QuantityPerUnit": "10 - 200 g glasses",
+ "UnitPrice": 25.89,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 31,
+ "ProductName": "Gorgonzola Telino",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "12 - 100 g pkgs",
+ "UnitPrice": 12.5,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 32,
+ "ProductName": "Mascarpone Fabioli",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 32.0,
+ "UnitsInStock": 9,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 33,
+ "ProductName": "Geitost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "500 g",
+ "UnitPrice": 2.5,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 34,
+ "ProductName": "Sasquatch Ale",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0,
+ "UnitsInStock": 111,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 35,
+ "ProductName": "Steeleye Stout",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 18.0,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 36,
+ "ProductName": "Inlagd Sill",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 250 g jars",
+ "UnitPrice": 19.0,
+ "UnitsInStock": 112,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 37,
+ "ProductName": "Gravad lax",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 500 g pkgs.",
+ "UnitPrice": 26.0,
+ "UnitsInStock": 11,
+ "UnitsOnOrder": 50,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 38,
+ "ProductName": "Côte de Blaye",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "12 - 75 cl bottles",
+ "UnitPrice": 263.5,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 39,
+ "ProductName": "Chartreuse verte",
+ "SupplierID": 18,
+ "CategoryID": 1,
+ "QuantityPerUnit": "750 cc per bottle",
+ "UnitPrice": 18.0,
+ "UnitsInStock": 69,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 40,
+ "ProductName": "Boston Crab Meat",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 4 oz tins",
+ "UnitPrice": 18.4,
+ "UnitsInStock": 123,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 41,
+ "ProductName": "Jack's New England Clam Chowder",
+ "SupplierID": 19,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 12 oz cans",
+ "UnitPrice": 9.65,
+ "UnitsInStock": 85,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 42,
+ "ProductName": "Singaporean Hokkien Fried Mee",
+ "SupplierID": 20,
+ "CategoryID": 5,
+ "QuantityPerUnit": "32 - 1 kg pkgs.",
+ "UnitPrice": 14.0,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 43,
+ "ProductName": "Ipoh Coffee",
+ "SupplierID": 20,
+ "CategoryID": 1,
+ "QuantityPerUnit": "16 - 500 g tins",
+ "UnitPrice": 46.0,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 44,
+ "ProductName": "Gula Malacca",
+ "SupplierID": 20,
+ "CategoryID": 2,
+ "QuantityPerUnit": "20 - 2 kg bags",
+ "UnitPrice": 19.45,
+ "UnitsInStock": 27,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 45,
+ "ProductName": "Rogede sild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "1k pkg.",
+ "UnitPrice": 9.5,
+ "UnitsInStock": 5,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 46,
+ "ProductName": "Spegesild",
+ "SupplierID": 21,
+ "CategoryID": 8,
+ "QuantityPerUnit": "4 - 450 g glasses",
+ "UnitPrice": 12.0,
+ "UnitsInStock": 95,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 47,
+ "ProductName": "Zaanse koeken",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 - 4 oz boxes",
+ "UnitPrice": 9.5,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 48,
+ "ProductName": "Chocolade",
+ "SupplierID": 22,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 pkgs.",
+ "UnitPrice": 12.75,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 49,
+ "ProductName": "Maxilaku",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "24 - 50 g pkgs.",
+ "UnitPrice": 20.0,
+ "UnitsInStock": 10,
+ "UnitsOnOrder": 60,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 50,
+ "ProductName": "Valkoinen suklaa",
+ "SupplierID": 23,
+ "CategoryID": 3,
+ "QuantityPerUnit": "12 - 100 g bars",
+ "UnitPrice": 16.25,
+ "UnitsInStock": 65,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 51,
+ "ProductName": "Manjimup Dried Apples",
+ "SupplierID": 24,
+ "CategoryID": 7,
+ "QuantityPerUnit": "50 - 300 g pkgs.",
+ "UnitPrice": 53.0,
+ "UnitsInStock": 20,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 52,
+ "ProductName": "Filo Mix",
+ "SupplierID": 24,
+ "CategoryID": 5,
+ "QuantityPerUnit": "16 - 2 kg boxes",
+ "UnitPrice": 7.0,
+ "UnitsInStock": 38,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 53,
+ "ProductName": "Perth Pasties",
+ "SupplierID": 24,
+ "CategoryID": 6,
+ "QuantityPerUnit": "48 pieces",
+ "UnitPrice": 32.8,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 54,
+ "ProductName": "Tourtière",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "16 pies",
+ "UnitPrice": 7.45,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 55,
+ "ProductName": "Pâté chinois",
+ "SupplierID": 25,
+ "CategoryID": 6,
+ "QuantityPerUnit": "24 boxes x 2 pies",
+ "UnitPrice": 24.0,
+ "UnitsInStock": 115,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ },
+ {
+ "ProductID": 56,
+ "ProductName": "Gnocchi di nonna Alice",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 38.0,
+ "UnitsInStock": 21,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 57,
+ "ProductName": "Ravioli Angelo",
+ "SupplierID": 26,
+ "CategoryID": 5,
+ "QuantityPerUnit": "24 - 250 g pkgs.",
+ "UnitPrice": 19.5,
+ "UnitsInStock": 36,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 58,
+ "ProductName": "Escargots de Bourgogne",
+ "SupplierID": 27,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 pieces",
+ "UnitPrice": 13.25,
+ "UnitsInStock": 62,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 59,
+ "ProductName": "Raclette Courdavault",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 55.0,
+ "UnitsInStock": 79,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 60,
+ "ProductName": "Camembert Pierrot",
+ "SupplierID": 28,
+ "CategoryID": 4,
+ "QuantityPerUnit": "15 - 300 g rounds",
+ "UnitPrice": 34.0,
+ "UnitsInStock": 19,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 61,
+ "ProductName": "Sirop d'érable",
+ "SupplierID": 29,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 500 ml bottles",
+ "UnitPrice": 28.5,
+ "UnitsInStock": 113,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 62,
+ "ProductName": "Tarte au sucre",
+ "SupplierID": 29,
+ "CategoryID": 3,
+ "QuantityPerUnit": "48 pies",
+ "UnitPrice": 49.3,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 63,
+ "ProductName": "Vegie-spread",
+ "SupplierID": 7,
+ "CategoryID": 2,
+ "QuantityPerUnit": "15 - 625 g jars",
+ "UnitPrice": 43.9,
+ "UnitsInStock": 24,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 64,
+ "ProductName": "Wimmers gute Semmelknödel",
+ "SupplierID": 12,
+ "CategoryID": 5,
+ "QuantityPerUnit": "20 bags x 4 pieces",
+ "UnitPrice": 33.25,
+ "UnitsInStock": 22,
+ "UnitsOnOrder": 80,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 5,
+ "CategoryName": "Grains/Cereals",
+ "Description": "Breads, crackers, pasta, and cereal"
+ }
+ },
+ {
+ "ProductID": 65,
+ "ProductName": "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "32 - 8 oz bottles",
+ "UnitPrice": 21.05,
+ "UnitsInStock": 76,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 66,
+ "ProductName": "Louisiana Hot Spiced Okra",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "24 - 8 oz jars",
+ "UnitPrice": 17.0,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 100,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 67,
+ "ProductName": "Laughing Lumberjack Lager",
+ "SupplierID": 16,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 14.0,
+ "UnitsInStock": 52,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 68,
+ "ProductName": "Scottish Longbreads",
+ "SupplierID": 8,
+ "CategoryID": 3,
+ "QuantityPerUnit": "10 boxes x 8 pieces",
+ "UnitPrice": 12.5,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 3,
+ "CategoryName": "Confections",
+ "Description": "Desserts, candies, and sweet breads"
+ }
+ },
+ {
+ "ProductID": 69,
+ "ProductName": "Gudbrandsdalsost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 kg pkg.",
+ "UnitPrice": 36.0,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 70,
+ "ProductName": "Outback Lager",
+ "SupplierID": 7,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 355 ml bottles",
+ "UnitPrice": 15.0,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 10,
+ "ReorderLevel": 30,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 71,
+ "ProductName": "Flotemysost",
+ "SupplierID": 15,
+ "CategoryID": 4,
+ "QuantityPerUnit": "10 - 500 g pkgs.",
+ "UnitPrice": 21.5,
+ "UnitsInStock": 26,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 72,
+ "ProductName": "Mozzarella di Giovanni",
+ "SupplierID": 14,
+ "CategoryID": 4,
+ "QuantityPerUnit": "24 - 200 g pkgs.",
+ "UnitPrice": 34.8,
+ "UnitsInStock": 14,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 4,
+ "CategoryName": "Dairy Products",
+ "Description": "Cheeses"
+ }
+ },
+ {
+ "ProductID": 73,
+ "ProductName": "Röd Kaviar",
+ "SupplierID": 17,
+ "CategoryID": 8,
+ "QuantityPerUnit": "24 - 150 g jars",
+ "UnitPrice": 15.0,
+ "UnitsInStock": 101,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ }
+ },
+ {
+ "ProductID": 74,
+ "ProductName": "Longlife Tofu",
+ "SupplierID": 4,
+ "CategoryID": 7,
+ "QuantityPerUnit": "5 kg pkg.",
+ "UnitPrice": 10.0,
+ "UnitsInStock": 4,
+ "UnitsOnOrder": 20,
+ "ReorderLevel": 5,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 75,
+ "ProductName": "Rhönbräu Klosterbier",
+ "SupplierID": 12,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 0.5 l bottles",
+ "UnitPrice": 7.75,
+ "UnitsInStock": 125,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 76,
+ "ProductName": "Lakkalikööri",
+ "SupplierID": 23,
+ "CategoryID": 1,
+ "QuantityPerUnit": "500 ml",
+ "UnitPrice": 18.0,
+ "UnitsInStock": 57,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 20,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 77,
+ "ProductName": "Original Frankfurter grüne Soße",
+ "SupplierID": 12,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 boxes",
+ "UnitPrice": 13.0,
+ "UnitsInStock": 32,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 15,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ }
+ ]
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/scroll-modes/basic/main.js b/vue-options-api-demos/grid/scroll-modes/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/scroll-modes/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/scroll-modes/basic/main.vue b/vue-options-api-demos/grid/scroll-modes/basic/main.vue
new file mode 100644
index 00000000..bec031cf
--- /dev/null
+++ b/vue-options-api-demos/grid/scroll-modes/basic/main.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/scroll-modes/custom/main.js b/vue-options-api-demos/grid/scroll-modes/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/scroll-modes/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/scroll-modes/custom/main.vue b/vue-options-api-demos/grid/scroll-modes/custom/main.vue
new file mode 100644
index 00000000..517d105e
--- /dev/null
+++ b/vue-options-api-demos/grid/scroll-modes/custom/main.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/scroll-modes/infinite/main.js b/vue-options-api-demos/grid/scroll-modes/infinite/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/scroll-modes/infinite/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/scroll-modes/infinite/main.vue b/vue-options-api-demos/grid/scroll-modes/infinite/main.vue
new file mode 100644
index 00000000..ade27aeb
--- /dev/null
+++ b/vue-options-api-demos/grid/scroll-modes/infinite/main.vue
@@ -0,0 +1,46 @@
+
+
+
+
+ showing: {{gridData.length}} items
+
+
diff --git a/vue-options-api-demos/grid/scroll-modes/infinite/products.json b/vue-options-api-demos/grid/scroll-modes/infinite/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/grid/scroll-modes/infinite/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/grid/selection/basic/main.js b/vue-options-api-demos/grid/selection/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/selection/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/selection/basic/main.vue b/vue-options-api-demos/grid/selection/basic/main.vue
new file mode 100644
index 00000000..3dfb79f8
--- /dev/null
+++ b/vue-options-api-demos/grid/selection/basic/main.vue
@@ -0,0 +1,63 @@
+
+
+ Selected Item: {{selectedItem && selectedItem.ProductID}} , {{selectedItem && selectedItem.ProductName}}
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/selection/custom/main.js b/vue-options-api-demos/grid/selection/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/selection/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/selection/custom/main.vue b/vue-options-api-demos/grid/selection/custom/main.vue
new file mode 100644
index 00000000..a63f6d2d
--- /dev/null
+++ b/vue-options-api-demos/grid/selection/custom/main.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/selection/custom/products.js b/vue-options-api-demos/grid/selection/custom/products.js
new file mode 100644
index 00000000..eafa8949
--- /dev/null
+++ b/vue-options-api-demos/grid/selection/custom/products.js
@@ -0,0 +1,125 @@
+const products = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "UnitPrice": 31.0000,
+ "UnitsInStock": 31
+ },
+ {
+ "ProductID": 11,
+ "ProductName": "Queso Cabrales",
+ "UnitPrice": 21.0000,
+ "UnitsInStock": 22
+ },
+ {
+ "ProductID": 12,
+ "ProductName": "Queso Manchego La Pastora",
+ "UnitPrice": 38.0000,
+ "UnitsInStock": 86
+ },
+ {
+ "ProductID": 13,
+ "ProductName": "Konbu",
+ "SupplierID": 6,
+ "UnitPrice": 6.0000,
+ "UnitsInStock": 24
+ },
+ {
+ "ProductID": 14,
+ "ProductName": "Tofu",
+ "UnitPrice": 23.2500,
+ "UnitsInStock": 35
+ },
+ {
+ "ProductID": 15,
+ "ProductName": "Genen Shouyu",
+ "UnitPrice": 15.5000,
+ "UnitsInStock": 39
+ },
+ {
+ "ProductID": 16,
+ "ProductName": "Pavlova",
+ "UnitPrice": 17.4500,
+ "UnitsInStock": 29
+ },
+ {
+ "ProductID": 17,
+ "ProductName": "Alice Mutton",
+ "UnitPrice": 39.0000,
+ "UnitsInStock": 0
+ },
+ {
+ "ProductID": 18,
+ "ProductName": "Carnarvon Tigers",
+ "UnitPrice": 62.5000,
+ "UnitsInStock": 42
+ },
+ {
+ "ProductID": 19,
+ "ProductName": "Teatime Chocolate Biscuits",
+ "UnitPrice": 9.2000,
+ "UnitsInStock": 25
+ },
+ {
+ "ProductID": 20,
+ "ProductName": "Sir Rodney's Marmalade",
+ "UnitPrice": 81.0000,
+ "UnitsInStock": 40
+ }
+];
+
+export { products };
diff --git a/vue-options-api-demos/grid/shared/categories.json b/vue-options-api-demos/grid/shared/categories.json
new file mode 100644
index 00000000..9b40e6e0
--- /dev/null
+++ b/vue-options-api-demos/grid/shared/categories.json
@@ -0,0 +1,43 @@
+
+[
+ {
+ "categoryID" : 2,
+ "description" : "Sweet and savory sauces relishes spreads and seasonings",
+ "name" : "Condiments"
+ },
+ {
+ "categoryID" : 1,
+ "description" : "Soft drinks coffees teas beers and ales",
+ "name" : "Beverages"
+ },
+ {
+ "categoryID" : 3,
+ "description" : "Desserts candies and sweet breads",
+ "name" : "Confections"
+ },
+ {
+ "categoryID" : 4,
+ "description" : "Cheeses",
+ "name" : "Dairy Products"
+ },
+ {
+ "categoryID" : 5,
+ "description" : "Breads crackers pasta and cereal",
+ "name" : "Grains/Cereals"
+ },
+ {
+ "categoryID" : 6,
+ "description" : "Prepared meats",
+ "name" : "Meat/Poultry"
+ },
+ {
+ "categoryID" : 7,
+ "description" : "Dried fruit and bean curd",
+ "name" : "Produce"
+ },
+ {
+ "categoryID" : 8,
+ "description" : "Seaweed and fish",
+ "name" : "Seafood"
+ }
+]
diff --git a/vue-options-api-demos/grid/shared/customers.json b/vue-options-api-demos/grid/shared/customers.json
new file mode 100644
index 00000000..ccf51582
--- /dev/null
+++ b/vue-options-api-demos/grid/shared/customers.json
@@ -0,0 +1,1277 @@
+
+[
+ {
+ "customerID" : "AROUT",
+ "companyName" : "Around the Horn",
+ "contactName" : "Thomas Hardy",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "120 Hanover Sq.",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "WA1 1DP",
+ "country" : "UK",
+ "phone" : "(171) 555-7788"
+ }
+ },
+ {
+ "customerID" : "BERGS",
+ "companyName" : "Berglunds snabbköp",
+ "contactName" : "Christina Berglund",
+ "contactTitle" : "Order Administrator",
+ "address" : {
+ "street" : "Berguvsvägen 8",
+ "city" : "Luleå",
+ "region" : "NULL",
+ "postalCode" : "S-958 22",
+ "country" : "Sweden",
+ "phone" : "0921-12 34 65"
+ }
+ },
+ {
+ "customerID" : "BLAUS",
+ "companyName" : "Blauer See Delikatessen",
+ "contactName" : "Hanna Moos",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Forsterstr. 57",
+ "city" : "Mannheim",
+ "region" : "NULL",
+ "postalCode" : 68306,
+ "country" : "Germany",
+ "phone" : "0621-08460"
+ }
+ },
+ {
+ "customerID" : "BLONP",
+ "companyName" : "Blondesddsl père et fils",
+ "contactName" : "Frédérique Citeaux",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "24 place Kléber",
+ "city" : "Strasbourg",
+ "region" : "NULL",
+ "postalCode" : 67000,
+ "country" : "France",
+ "phone" : "88.60.15.31"
+ }
+ },
+ {
+ "customerID" : "BOLID",
+ "companyName" : "Bólido Comidas preparadas",
+ "contactName" : "Martín Sommer",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "67C Araquil",
+ "city" : "Madrid",
+ "region" : "NULL",
+ "postalCode" : 28023,
+ "country" : "Spain",
+ "phone" : "(91) 555 22 82"
+ }
+ },
+ {
+ "customerID" : "BONAP",
+ "companyName" : "Bon app'",
+ "contactName" : "Laurence Lebihan",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "12 rue des Bouchers",
+ "city" : "Marseille",
+ "region" : "NULL",
+ "postalCode" : 13008,
+ "country" : "France",
+ "phone" : "91.24.45.40"
+ }
+ },
+ {
+ "customerID" : "ANTON",
+ "companyName" : "Antonio Moreno Taquería",
+ "contactName" : "Antonio Moreno",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Mataderos 2312",
+ "city" : "México D.F.",
+ "region" : "NULL",
+ "postalCode" : 5023,
+ "country" : "Mexico",
+ "phone" : "(5) 555-3932"
+ }
+ },
+ {
+ "customerID" : "ANATR",
+ "companyName" : "Ana Trujillo Emparedados y helados",
+ "contactName" : "Ana Trujillo",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Avda. de la Constitución 2222",
+ "city" : "México D.F.",
+ "region" : "NULL",
+ "postalCode" : 5021,
+ "country" : "Mexico",
+ "phone" : "(5) 555-4729"
+ }
+ },
+ {
+ "customerID" : "CACTU",
+ "companyName" : "Cactus Comidas para llevar",
+ "contactName" : "Patricio Simpson",
+ "contactTitle" : "Sales Agent",
+ "address" : {
+ "street" : "Cerrito 333",
+ "city" : "Buenos Aires",
+ "region" : "NULL",
+ "postalCode" : 1010,
+ "country" : "Argentina",
+ "phone" : "(1) 135-5555"
+ }
+ },
+ {
+ "customerID" : "BSBEV",
+ "companyName" : "B's Beverages",
+ "contactName" : "Victoria Ashworth",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Fauntleroy Circus",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "EC2 5NT",
+ "country" : "UK",
+ "phone" : "(171) 555-1212"
+ }
+ },
+ {
+ "customerID" : "CENTC",
+ "companyName" : "Centro comercial Moctezuma",
+ "contactName" : "Francisco Chang",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Sierras de Granada 9993",
+ "city" : "México D.F.",
+ "region" : "NULL",
+ "postalCode" : 5022,
+ "country" : "Mexico",
+ "phone" : "(5) 555-3392"
+ }
+ },
+ {
+ "customerID" : "CHOPS",
+ "companyName" : "Chop-suey Chinese",
+ "contactName" : "Yang Wang",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Hauptstr. 29",
+ "city" : "Bern",
+ "region" : "NULL",
+ "postalCode" : 3012,
+ "country" : "Switzerland",
+ "phone" : "0452-076545"
+ }
+ },
+ {
+ "customerID" : "COMMI",
+ "companyName" : "Comércio Mineiro",
+ "contactName" : "Pedro Afonso",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "23 Av. dos Lusíadas",
+ "city" : "Sao Paulo",
+ "region" : "SP",
+ "postalCode" : "05432-043",
+ "country" : "Brazil",
+ "phone" : "(11) 555-7647"
+ }
+ },
+ {
+ "customerID" : "CONSH",
+ "companyName" : "Consolidated Holdings",
+ "contactName" : "Elizabeth Brown",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Berkeley Gardens 12 Brewery",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "WX1 6LT",
+ "country" : "UK",
+ "phone" : "(171) 555-2282"
+ }
+ },
+ {
+ "customerID" : "ALFKI",
+ "companyName" : "Alfreds Futterkiste",
+ "contactName" : "Maria Anders",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Obere Str. 57",
+ "city" : "Berlin",
+ "region" : "NULL",
+ "postalCode" : 12209,
+ "country" : "Germany",
+ "phone" : "030-0074321"
+ }
+ },
+ {
+ "customerID" : "BOTTM",
+ "companyName" : "Bottom-Dollar Markets",
+ "contactName" : "Elizabeth Lincoln",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "23 Tsawassen Blvd.",
+ "city" : "Tsawassen",
+ "region" : "BC",
+ "postalCode" : "T2F 8M4",
+ "country" : "Canada",
+ "phone" : "(604) 555-4729"
+ }
+ },
+ {
+ "customerID" : "DRACD",
+ "companyName" : "Drachenblut Delikatessen",
+ "contactName" : "Sven Ottlieb",
+ "contactTitle" : "Order Administrator",
+ "address" : {
+ "street" : "Walserweg 21",
+ "city" : "Aachen",
+ "region" : "NULL",
+ "postalCode" : 52066,
+ "country" : "Germany",
+ "phone" : "0241-039123"
+ }
+ },
+ {
+ "customerID" : "DUMON",
+ "companyName" : "Du monde entier",
+ "contactName" : "Janine Labrune",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "67 rue des Cinquante Otages",
+ "city" : "Nantes",
+ "region" : "NULL",
+ "postalCode" : 44000,
+ "country" : "France",
+ "phone" : "40.67.88.88"
+ }
+ },
+ {
+ "customerID" : "FAMIA",
+ "companyName" : "Familia Arquibaldo",
+ "contactName" : "Aria Cruz",
+ "contactTitle" : "Marketing Assistant",
+ "address" : {
+ "street" : "Rua Orós 92",
+ "city" : "Sao Paulo",
+ "region" : "SP",
+ "postalCode" : "05442-030",
+ "country" : "Brazil",
+ "phone" : "(11) 555-9857"
+ }
+ },
+ {
+ "customerID" : "FISSA",
+ "companyName" : "FISSA Fabrica Inter. Salchichas S.A.",
+ "contactName" : "Diego Roel",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "C/ Moralzarzal 86",
+ "city" : "Madrid",
+ "region" : "NULL",
+ "postalCode" : 28034,
+ "country" : "Spain",
+ "phone" : "(91) 555 94 44"
+ }
+ },
+ {
+ "customerID" : "FOLIG",
+ "companyName" : "Folies gourmandes",
+ "contactName" : "Martine Rancé",
+ "contactTitle" : "Assistant Sales Agent",
+ "address" : {
+ "street" : "184 chaussée de Tournai",
+ "city" : "Lille",
+ "region" : "NULL",
+ "postalCode" : 59000,
+ "country" : "France",
+ "phone" : "20.16.10.16"
+ }
+ },
+ {
+ "customerID" : "FOLKO",
+ "companyName" : "Folk och fä HB",
+ "contactName" : "Maria Larsson",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Åkergatan 24",
+ "city" : "Bräcke",
+ "region" : "NULL",
+ "postalCode" : "S-844 67",
+ "country" : "Sweden",
+ "phone" : "0695-34 67 21"
+ }
+ },
+ {
+ "customerID" : "FRANK",
+ "companyName" : "Frankenversand",
+ "contactName" : "Peter Franken",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Berliner Platz 43",
+ "city" : "München",
+ "region" : "NULL",
+ "postalCode" : 80805,
+ "country" : "Germany",
+ "phone" : "089-0877310"
+ }
+ },
+ {
+ "customerID" : "FRANR",
+ "companyName" : "France restauration",
+ "contactName" : "Carine Schmitt",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "54 rue Royale",
+ "city" : "Nantes",
+ "region" : "NULL",
+ "postalCode" : 44000,
+ "country" : "France",
+ "phone" : "40.32.21.21"
+ }
+ },
+ {
+ "customerID" : "EASTC",
+ "companyName" : "Eastern Connection",
+ "contactName" : "Ann Devon",
+ "contactTitle" : "Sales Agent",
+ "address" : {
+ "street" : "35 King George",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "WX3 6FW",
+ "country" : "UK",
+ "phone" : "(171) 555-0297"
+ }
+ },
+ {
+ "customerID" : "ERNSH",
+ "companyName" : "Ernst Handel",
+ "contactName" : "Roland Mendel",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Kirchgasse 6",
+ "city" : "Graz",
+ "region" : "NULL",
+ "postalCode" : 8010,
+ "country" : "Austria",
+ "phone" : "7675-3425"
+ }
+ },
+ {
+ "customerID" : "FRANS",
+ "companyName" : "Franchi S.p.A.",
+ "contactName" : "Paolo Accorti",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Via Monte Bianco 34",
+ "city" : "Torino",
+ "region" : "NULL",
+ "postalCode" : 10100,
+ "country" : "Italy",
+ "phone" : "011-4988260"
+ }
+ },
+ {
+ "customerID" : "FURIB",
+ "companyName" : "Furia Bacalhau e Frutos do Mar",
+ "contactName" : "Lino Rodriguez",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Jardim das rosas n. 32",
+ "city" : "Lisboa",
+ "region" : "NULL",
+ "postalCode" : 1675,
+ "country" : "Portugal",
+ "phone" : "(1) 354-2534"
+ }
+ },
+ {
+ "customerID" : "GALED",
+ "companyName" : "Galería del gastrónomo",
+ "contactName" : "Eduardo Saavedra",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Rambla de Cataluña 23",
+ "city" : "Barcelona",
+ "region" : "NULL",
+ "postalCode" : 8022,
+ "country" : "Spain",
+ "phone" : "(93) 203 4560"
+ }
+ },
+ {
+ "customerID" : "GODOS",
+ "companyName" : "Godos Cocina Típica",
+ "contactName" : "José Pedro Freyre",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "C/ Romero 33",
+ "city" : "Sevilla",
+ "region" : "NULL",
+ "postalCode" : 41101,
+ "country" : "Spain",
+ "phone" : "(95) 555 82 82"
+ }
+ },
+ {
+ "customerID" : "GOURL",
+ "companyName" : "Gourmet Lanchonetes",
+ "contactName" : "André Fonseca",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "Av. Brasil 442",
+ "city" : "Campinas",
+ "region" : "SP",
+ "postalCode" : "04876-786",
+ "country" : "Brazil",
+ "phone" : "(11) 555-9482"
+ }
+ },
+ {
+ "customerID" : "HILAA",
+ "companyName" : "HILARION-Abastos",
+ "contactName" : "Carlos Hernández",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city" : "San Cristóbal",
+ "region" : "Táchira",
+ "postalCode" : 5022,
+ "country" : "Venezuela",
+ "phone" : "(5) 555-1340"
+ }
+ },
+ {
+ "customerID" : "HUNGC",
+ "companyName" : "Hungry Coyote Import Store",
+ "contactName" : "Yoshi Latimer",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "City Center Plaza 516 Main St.",
+ "city" : "Elgin",
+ "region" : "OR",
+ "postalCode" : 97827,
+ "country" : "USA",
+ "phone" : "(503) 555-6874"
+ }
+ },
+ {
+ "customerID" : "HUNGO",
+ "companyName" : "Hungry Owl All-Night Grocers",
+ "contactName" : "Patricia McKenna",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "8 Johnstown Road",
+ "city" : "Cork",
+ "region" : "Co. Cork",
+ "postalCode" : "NULL",
+ "country" : "Ireland",
+ "phone" : "2967 542"
+ }
+ },
+ {
+ "customerID" : "ISLAT",
+ "companyName" : "Island Trading",
+ "contactName" : "Helen Bennett",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Garden House Crowther Way",
+ "city" : "Cowes",
+ "region" : "Isle of Wight",
+ "postalCode" : "PO31 7PJ",
+ "country" : "UK",
+ "phone" : "(198) 555-8888"
+ }
+ },
+ {
+ "customerID" : "KOENE",
+ "companyName" : "Königlich Essen",
+ "contactName" : "Philip Cramer",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "Maubelstr. 90",
+ "city" : "Brandenburg",
+ "region" : "NULL",
+ "postalCode" : 14776,
+ "country" : "Germany",
+ "phone" : "0555-09876"
+ }
+ },
+ {
+ "customerID" : "LACOR",
+ "companyName" : "La corne d'abondance",
+ "contactName" : "Daniel Tonini",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "67 avenue de l'Europe",
+ "city" : "Versailles",
+ "region" : "NULL",
+ "postalCode" : 78000,
+ "country" : "France",
+ "phone" : "30.59.84.10"
+ }
+ },
+ {
+ "customerID" : "GROSR",
+ "companyName" : "GROSELLA-Restaurante",
+ "contactName" : "Manuel Pereira",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "5ª Ave. Los Palos Grandes",
+ "city" : "Caracas",
+ "region" : "DF",
+ "postalCode" : 1081,
+ "country" : "Venezuela",
+ "phone" : "(2) 283-2951"
+ }
+ },
+ {
+ "customerID" : "HANAR",
+ "companyName" : "Hanari Carnes",
+ "contactName" : "Mario Pontes",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Rua do Paço 67",
+ "city" : "Rio de Janeiro",
+ "region" : "RJ",
+ "postalCode" : "05454-876",
+ "country" : "Brazil",
+ "phone" : "(21) 555-0091"
+ }
+ },
+ {
+ "customerID" : "LAUGB",
+ "companyName" : "Laughing Bacchus Wine Cellars",
+ "contactName" : "Yoshi Tannamuri",
+ "contactTitle" : "Marketing Assistant",
+ "address" : {
+ "street" : "1900 Oak St.",
+ "city" : "Vancouver",
+ "region" : "BC",
+ "postalCode" : "V3F 2K1",
+ "country" : "Canada",
+ "phone" : "(604) 555-3392"
+ }
+ },
+ {
+ "customerID" : "LAZYK",
+ "companyName" : "Lazy K Kountry Store",
+ "contactName" : "John Steel",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "12 Orchestra Terrace",
+ "city" : "Walla Walla",
+ "region" : "WA",
+ "postalCode" : 99362,
+ "country" : "USA",
+ "phone" : "(509) 555-7969"
+ }
+ },
+ {
+ "customerID" : "LEHMS",
+ "companyName" : "Lehmanns Marktstand",
+ "contactName" : "Renate Messner",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Magazinweg 7",
+ "city" : "Frankfurt a.M.",
+ "region" : "NULL",
+ "postalCode" : 60528,
+ "country" : "Germany",
+ "phone" : "069-0245984"
+ }
+ },
+ {
+ "customerID" : "GREAL",
+ "companyName" : "Great Lakes Food Market",
+ "contactName" : "Howard Snyder",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "2732 Baker Blvd.",
+ "city" : "Eugene",
+ "region" : "OR",
+ "postalCode" : 97403,
+ "country" : "USA",
+ "phone" : "(503) 555-7555"
+ }
+ },
+ {
+ "customerID" : "LAMAI",
+ "companyName" : "La maison d'Asie",
+ "contactName" : "Annette Roulet",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "1 rue Alsace-Lorraine",
+ "city" : "Toulouse",
+ "region" : "NULL",
+ "postalCode" : 31000,
+ "country" : "France",
+ "phone" : "61.77.61.10"
+ }
+ },
+ {
+ "customerID" : "LETSS",
+ "companyName" : "Let's Stop N Shop",
+ "contactName" : "Jaime Yorres",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "87 Polk St. Suite 5",
+ "city" : "San Francisco",
+ "region" : "CA",
+ "postalCode" : 94117,
+ "country" : "USA",
+ "phone" : "(415) 555-5938"
+ }
+ },
+ {
+ "customerID" : "MAGAA",
+ "companyName" : "Magazzini Alimentari Riuniti",
+ "contactName" : "Giovanni Rovelli",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Via Ludovico il Moro 22",
+ "city" : "Bergamo",
+ "region" : "NULL",
+ "postalCode" : 24100,
+ "country" : "Italy",
+ "phone" : "035-640230"
+ }
+ },
+ {
+ "customerID" : "MAISD",
+ "companyName" : "Maison Dewey",
+ "contactName" : "Catherine Dewey",
+ "contactTitle" : "Sales Agent",
+ "address" : {
+ "street" : "Rue Joseph-Bens 532",
+ "city" : "Bruxelles",
+ "region" : "NULL",
+ "postalCode" : "B-1180",
+ "country" : "Belgium",
+ "phone" : "(02) 201 24 67"
+ }
+ },
+ {
+ "customerID" : "MEREP",
+ "companyName" : "Mère Paillarde",
+ "contactName" : "Jean Fresnière",
+ "contactTitle" : "Marketing Assistant",
+ "address" : {
+ "street" : "43 rue St. Laurent",
+ "city" : "Montréal",
+ "region" : "Québec",
+ "postalCode" : "H1J 1C3",
+ "country" : "Canada",
+ "phone" : "(514) 555-8054"
+ }
+ },
+ {
+ "customerID" : "MORGK",
+ "companyName" : "Morgenstern Gesundkost",
+ "contactName" : "Alexander Feuer",
+ "contactTitle" : "Marketing Assistant",
+ "address" : {
+ "street" : "Heerstr. 22",
+ "city" : "Leipzig",
+ "region" : "NULL",
+ "postalCode" : 4179,
+ "country" : "Germany",
+ "phone" : "0342-023176"
+ }
+ },
+ {
+ "customerID" : "NORTS",
+ "companyName" : "North/South",
+ "contactName" : "Simon Crowther",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "South House 300 Queensbridge",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "SW7 1RZ",
+ "country" : "UK",
+ "phone" : "(171) 555-7733"
+ }
+ },
+ {
+ "customerID" : "OCEAN",
+ "companyName" : "Océano Atlántico Ltda.",
+ "contactName" : "Yvonne Moncada",
+ "contactTitle" : "Sales Agent",
+ "address" : {
+ "street" : "Ing. Gustavo Moncada 8585 Piso 20-A",
+ "city" : "Buenos Aires",
+ "region" : "NULL",
+ "postalCode" : 1010,
+ "country" : "Argentina",
+ "phone" : "(1) 135-5333"
+ }
+ },
+ {
+ "customerID" : "LINOD",
+ "companyName" : "LINO-Delicateses",
+ "contactName" : "Felipe Izquierdo",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Ave. 5 de Mayo Porlamar",
+ "city" : "I. de Margarita",
+ "region" : "Nueva Esparta",
+ "postalCode" : 4980,
+ "country" : "Venezuela",
+ "phone" : "(8) 34-56-12"
+ }
+ },
+ {
+ "customerID" : "LILAS",
+ "companyName" : "LILA-Supermercado",
+ "contactName" : "Carlos González",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city" : "Barquisimeto",
+ "region" : "Lara",
+ "postalCode" : 3508,
+ "country" : "Venezuela",
+ "phone" : "(9) 331-6954"
+ }
+ },
+ {
+ "customerID" : "OLDWO",
+ "companyName" : "Old World Delicatessen",
+ "contactName" : "Rene Phillips",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "2743 Bering St.",
+ "city" : "Anchorage",
+ "region" : "AK",
+ "postalCode" : 99508,
+ "country" : "USA",
+ "phone" : "(907) 555-7584"
+ }
+ },
+ {
+ "customerID" : "OTTIK",
+ "companyName" : "Ottilies Käseladen",
+ "contactName" : "Henriette Pfalzheim",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Mehrheimerstr. 369",
+ "city" : "Köln",
+ "region" : "NULL",
+ "postalCode" : 50739,
+ "country" : "Germany",
+ "phone" : "0221-0644327"
+ }
+ },
+ {
+ "customerID" : "PICCO",
+ "companyName" : "Piccolo und mehr",
+ "contactName" : "Georg Pipps",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Geislweg 14",
+ "city" : "Salzburg",
+ "region" : "NULL",
+ "postalCode" : 5020,
+ "country" : "Austria",
+ "phone" : "6562-9722"
+ }
+ },
+ {
+ "customerID" : "PARIS",
+ "companyName" : "Paris spécialités",
+ "contactName" : "Marie Bertrand",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "265 boulevard Charonne",
+ "city" : "Paris",
+ "region" : "NULL",
+ "postalCode" : 75012,
+ "country" : "France",
+ "phone" : "(1) 42.34.22.66"
+ }
+ },
+ {
+ "customerID" : "PERIC",
+ "companyName" : "Pericles Comidas clásicas",
+ "contactName" : "Guillermo Fernández",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Calle Dr. Jorge Cash 321",
+ "city" : "México D.F.",
+ "region" : "NULL",
+ "postalCode" : 5033,
+ "country" : "Mexico",
+ "phone" : "(5) 552-3745"
+ }
+ },
+ {
+ "customerID" : "PRINI",
+ "companyName" : "Princesa Isabel Vinhos",
+ "contactName" : "Isabel de Castro",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Estrada da saúde n. 58",
+ "city" : "Lisboa",
+ "region" : "NULL",
+ "postalCode" : 1756,
+ "country" : "Portugal",
+ "phone" : "(1) 356-5634"
+ }
+ },
+ {
+ "customerID" : "LONEP",
+ "companyName" : "Lonesome Pine Restaurant",
+ "contactName" : "Fran Wilson",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "89 Chiaroscuro Rd.",
+ "city" : "Portland",
+ "region" : "OR",
+ "postalCode" : 97219,
+ "country" : "USA",
+ "phone" : "(503) 555-9573"
+ }
+ },
+ {
+ "customerID" : "QUEEN",
+ "companyName" : "Queen Cozinha",
+ "contactName" : "Lúcia Carvalho",
+ "contactTitle" : "Marketing Assistant",
+ "address" : {
+ "street" : "Alameda dos Canàrios 891",
+ "city" : "Sao Paulo",
+ "region" : "SP",
+ "postalCode" : "05487-020",
+ "country" : "Brazil",
+ "phone" : "(11) 555-1189"
+ }
+ },
+ {
+ "customerID" : "RATTC",
+ "companyName" : "Rattlesnake Canyon Grocery",
+ "contactName" : "Paula Wilson",
+ "contactTitle" : "Assistant Sales Representative",
+ "address" : {
+ "street" : "2817 Milton Dr.",
+ "city" : "Albuquerque",
+ "region" : "NM",
+ "postalCode" : 87110,
+ "country" : "USA",
+ "phone" : "(505) 555-5939"
+ }
+ },
+ {
+ "customerID" : "REGGC",
+ "companyName" : "Reggiani Caseifici",
+ "contactName" : "Maurizio Moroni",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "Strada Provinciale 124",
+ "city" : "Reggio Emilia",
+ "region" : "NULL",
+ "postalCode" : 42100,
+ "country" : "Italy",
+ "phone" : "0522-556721"
+ }
+ },
+ {
+ "customerID" : "QUEDE",
+ "companyName" : "Que Delícia",
+ "contactName" : "Bernardo Batista",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Rua da Panificadora",
+ "city" : "12Rio de Janeiro",
+ "region" : "RJ",
+ "postalCode" : "02389-673",
+ "country" : "Brazil",
+ "phone" : "(21) 555-4252"
+ }
+ },
+ {
+ "customerID" : "RANCH",
+ "companyName" : "Rancho grande",
+ "contactName" : "Sergio Gutiérrez",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Av. del Libertador 900",
+ "city" : "Buenos Aires",
+ "region" : "NULL",
+ "postalCode" : 1010,
+ "country" : "Argentina",
+ "phone" : "(1) 123-5555"
+ }
+ },
+ {
+ "customerID" : "ROMEY",
+ "companyName" : "Romero y tomillo",
+ "contactName" : "Alejandra Camino",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Gran Vía 1",
+ "city" : "Madrid",
+ "region" : "NULL",
+ "postalCode" : 28001,
+ "country" : "Spain",
+ "phone" : "(91) 745 6200"
+ }
+ },
+ {
+ "customerID" : "QUICK",
+ "companyName" : "QUICK-Stop",
+ "contactName" : "Horst Kloss",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Taucherstraße 10",
+ "city" : "Cunewalde",
+ "region" : "NULL",
+ "postalCode" : 1307,
+ "country" : "Germany",
+ "phone" : "0372-035188"
+ }
+ },
+ {
+ "customerID" : "RICAR",
+ "companyName" : "Ricardo Adocicados",
+ "contactName" : "Janete Limeira",
+ "contactTitle" : "Assistant Sales Agent",
+ "address" : {
+ "street" : "Av. Copacabana 267",
+ "city" : "Rio de Janeiro",
+ "region" : "RJ",
+ "postalCode" : "02389-890",
+ "country" : "Brazil",
+ "phone" : "(21) 555-3412"
+ }
+ },
+ {
+ "customerID" : "RICSU",
+ "companyName" : "Richter Supermarkt",
+ "contactName" : "Michael Holz",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Grenzacherweg 237",
+ "city" : "Genève",
+ "region" : "NULL",
+ "postalCode" : 1203,
+ "country" : "Switzerland",
+ "phone" : "0897-034214"
+ }
+ },
+ {
+ "customerID" : "SANTG",
+ "companyName" : "Santé Gourmet",
+ "contactName" : "Jonas Bergulfsen",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Erling Skakkes gate 78",
+ "city" : "Stavern",
+ "region" : "NULL",
+ "postalCode" : 4110,
+ "country" : "Norway",
+ "phone" : "07-98 92 35"
+ }
+ },
+ {
+ "customerID" : "SAVEA",
+ "companyName" : "Save-a-lot Markets",
+ "contactName" : "Jose Pavarotti",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "187 Suffolk Ln.",
+ "city" : "Boise",
+ "region" : "ID",
+ "postalCode" : 83720,
+ "country" : "USA",
+ "phone" : "(208) 555-8097"
+ }
+ },
+ {
+ "customerID" : "SEVES",
+ "companyName" : "Seven Seas Imports",
+ "contactName" : "Hari Kumar",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "90 Wadhurst Rd.",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "OX15 4NB",
+ "country" : "UK",
+ "phone" : "(171) 555-1717"
+ }
+ },
+ {
+ "customerID" : "SIMOB",
+ "companyName" : "Simons bistro",
+ "contactName" : "Jytte Petersen",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Vinbæltet 34",
+ "city" : "Kobenhavn",
+ "region" : "NULL",
+ "postalCode" : 1734,
+ "country" : "Denmark",
+ "phone" : "31 12 34 56"
+ }
+ },
+ {
+ "customerID" : "SPECD",
+ "companyName" : "Spécialités du monde",
+ "contactName" : "Dominique Perrier",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "25 rue Lauriston",
+ "city" : "Paris",
+ "region" : "NULL",
+ "postalCode" : 75016,
+ "country" : "France",
+ "phone" : "(1) 47.55.60.10"
+ }
+ },
+ {
+ "customerID" : "SPLIR",
+ "companyName" : "Split Rail Beer & Ale",
+ "contactName" : "Art Braunschweiger",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "P.O. Box 555",
+ "city" : "Lander",
+ "region" : "WY",
+ "postalCode" : 82520,
+ "country" : "USA",
+ "phone" : "(307) 555-4680"
+ }
+ },
+ {
+ "customerID" : "SUPRD",
+ "companyName" : "Suprêmes délices",
+ "contactName" : "Pascale Cartrain",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Boulevard Tirou 255",
+ "city" : "Charleroi",
+ "region" : "NULL",
+ "postalCode" : "B-6000",
+ "country" : "Belgium",
+ "phone" : "(071) 23 67 22 20"
+ }
+ },
+ {
+ "customerID" : "THEBI",
+ "companyName" : "The Big Cheese",
+ "contactName" : "Liz Nixon",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "89 Jefferson Way Suite 2",
+ "city" : "Portland",
+ "region" : "OR",
+ "postalCode" : 97201,
+ "country" : "USA",
+ "phone" : "(503) 555-3612"
+ }
+ },
+ {
+ "customerID" : "THECR",
+ "companyName" : "The Cracker Box",
+ "contactName" : "Liu Wong",
+ "contactTitle" : "Marketing Assistant",
+ "address" : {
+ "street" : "55 Grizzly Peak Rd.",
+ "city" : "Butte",
+ "region" : "MT",
+ "postalCode" : 59801,
+ "country" : "USA",
+ "phone" : "(406) 555-5834"
+ }
+ },
+ {
+ "customerID" : "TOMSP",
+ "companyName" : "Toms Spezialitäten",
+ "contactName" : "Karin Josephs",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Luisenstr. 48",
+ "city" : "Münster",
+ "region" : "NULL",
+ "postalCode" : 44087,
+ "country" : "Germany",
+ "phone" : "0251-031259"
+ }
+ },
+ {
+ "customerID" : "TORTU",
+ "companyName" : "Tortuga Restaurante",
+ "contactName" : "Miguel Angel Paolino",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "Avda. Azteca 123",
+ "city" : "México D.F.",
+ "region" : "NULL",
+ "postalCode" : 5033,
+ "country" : "Mexico",
+ "phone" : "(5) 555-2933"
+ }
+ },
+ {
+ "customerID" : "TRADH",
+ "companyName" : "Tradição Hipermercados",
+ "contactName" : "Anabela Domingues",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Av. Inês de Castro 414",
+ "city" : "Sao Paulo",
+ "region" : "SP",
+ "postalCode" : "05634-030",
+ "country" : "Brazil",
+ "phone" : "(11) 555-2167"
+ }
+ },
+ {
+ "customerID" : "TRAIH",
+ "companyName" : "Trail's Head Gourmet Provisioners",
+ "contactName" : "Helvetius Nagy",
+ "contactTitle" : "Sales Associate",
+ "address" : {
+ "street" : "722 DaVinci Blvd.",
+ "city" : "Kirkland",
+ "region" : "WA",
+ "postalCode" : 98034,
+ "country" : "USA",
+ "phone" : "(206) 555-8257"
+ }
+ },
+ {
+ "customerID" : "VAFFE",
+ "companyName" : "Vaffeljernet",
+ "contactName" : "Palle Ibsen",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Smagsloget 45",
+ "city" : "Århus",
+ "region" : "NULL",
+ "postalCode" : 8200,
+ "country" : "Denmark",
+ "phone" : "86 21 32 43"
+ }
+ },
+ {
+ "customerID" : "VICTE",
+ "companyName" : "Victuailles en stock",
+ "contactName" : "Mary Saveley",
+ "contactTitle" : "Sales Agent",
+ "address" : {
+ "street" : "2 rue du Commerce",
+ "city" : "Lyon",
+ "region" : "NULL",
+ "postalCode" : 69004,
+ "country" : "France",
+ "phone" : "78.32.54.86"
+ }
+ },
+ {
+ "customerID" : "VINET",
+ "companyName" : "Vins et alcools Chevalier",
+ "contactName" : "Paul Henriot",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "59 rue de l'Abbaye",
+ "city" : "Reims",
+ "region" : "NULL",
+ "postalCode" : 51100,
+ "country" : "France",
+ "phone" : "26.47.15.10"
+ }
+ },
+ {
+ "customerID" : "WANDK",
+ "companyName" : "Die Wandernde Kuh",
+ "contactName" : "Rita Müller",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Adenauerallee 900",
+ "city" : "Stuttgart",
+ "region" : "NULL",
+ "postalCode" : 70563,
+ "country" : "Germany",
+ "phone" : "0711-020361"
+ }
+ },
+ {
+ "customerID" : "WARTH",
+ "companyName" : "Wartian Herkku",
+ "contactName" : "Pirkko Koskitalo",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Torikatu 38",
+ "city" : "Oulu",
+ "region" : "NULL",
+ "postalCode" : 90110,
+ "country" : "Finland",
+ "phone" : "981-443655"
+ }
+ },
+ {
+ "customerID" : "WELLI",
+ "companyName" : "Wellington Importadora",
+ "contactName" : "Paula Parente",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Rua do Mercado 12",
+ "city" : "Resende",
+ "region" : "SP",
+ "postalCode" : "08737-363",
+ "country" : "Brazil",
+ "phone" : "(14) 555-8122"
+ }
+ },
+ {
+ "customerID" : "WHITC",
+ "companyName" : "White Clover Markets",
+ "contactName" : "Karl Jablonski",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "305 - 14th Ave. S. Suite 3B",
+ "city" : "Seattle",
+ "region" : "WA",
+ "postalCode" : 98128,
+ "country" : "USA",
+ "phone" : "(206) 555-4112"
+ }
+ },
+ {
+ "customerID" : "WILMK",
+ "companyName" : "Wilman Kala",
+ "contactName" : "Matti Karttunen",
+ "contactTitle" : "Owner/Marketing Assistant",
+ "address" : {
+ "street" : "Keskuskatu 45",
+ "city" : "Helsinki",
+ "region" : "NULL",
+ "postalCode" : 21240,
+ "country" : "Finland",
+ "phone" : "90-224 8858"
+ }
+ },
+ {
+ "customerID" : "WOLZA",
+ "companyName" : "Wolski Zajazd",
+ "contactName" : "Zbyszek Piestrzeniewicz",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "ul. Filtrowa 68",
+ "city" : "Warszawa",
+ "region" : "NULL",
+ "postalCode" : "01-012",
+ "country" : "Poland",
+ "phone" : "(26) 642-7012"
+ }
+ }
+]
diff --git a/vue-options-api-demos/grid/shared/employees.json b/vue-options-api-demos/grid/shared/employees.json
new file mode 100644
index 00000000..ca4d4a8b
--- /dev/null
+++ b/vue-options-api-demos/grid/shared/employees.json
@@ -0,0 +1,241 @@
+
+[
+ {
+ "employeeID" : 2,
+ "lastName" : "Fuller",
+ "firstName" : "Andrew",
+ "title" : "Vice President Sales",
+ "titleOfCourtesy" : "Dr.",
+ "birthDate" : "1952-02-19 00:00:00.000",
+ "hireDate" : "1992-08-14 00:00:00.000",
+ "address" : {
+ "street" : "908 W. Capital Way",
+ "city" : "Tacoma",
+ "region" : "WA",
+ "postalCode" : 98401,
+ "country" : "USA",
+ "phone" : "(206) 555-9482"
+ },
+ "notes" : "Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of Dallas in 1981. He is fluent in French and Italian and reads German. He joined the company as a sales representative was promoted to sales manager",
+ "reportsTo" : "NULL",
+ "territoryIDs" : [
+ 1730,
+ 1833,
+ 2116,
+ 2139,
+ 2184,
+ 40222,
+ 1581
+ ]
+ },
+ {
+ "employeeID" : 5,
+ "lastName" : "Buchanan",
+ "firstName" : "Steven",
+ "title" : "Sales Manager",
+ "titleOfCourtesy" : "Mr.",
+ "birthDate" : "1955-03-04 00:00:00.000",
+ "hireDate" : "1993-10-17 00:00:00.000",
+ "address" : {
+ "street" : "14 Garrett Hill",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "SW1 8JR",
+ "country" : "UK",
+ "phone" : "(71) 555-4848"
+ },
+ "notes" : "Steven Buchanan graduated from St. Andrews University in Scotland with a BSC degree in 1976. Upon joining the company as a sales representative in 1992 he spent 6 months in an orientation program at the Seattle office.",
+ "reportsTo" : 2,
+ "territoryIDs" : [
+ 2903,
+ 7960,
+ 8837,
+ 10019,
+ 10038,
+ 11747,
+ 14450
+ ]
+ },
+ {
+ "employeeID" : 1,
+ "lastName" : "Davolio",
+ "firstName" : "Nancy",
+ "title" : "Sales Representative",
+ "titleOfCourtesy" : "Ms.",
+ "birthDate" : "1948-12-08 00:00:00.000",
+ "hireDate" : "1992-05-01 00:00:00.000",
+ "address" : {
+ "street" : "507 20th Ave. E. Apt. 2A",
+ "city" : "Seattle",
+ "region" : "WA",
+ "postalCode" : 98122,
+ "country" : "USA",
+ "phone" : "(206) 555-9857"
+ },
+ "notes" : "Education includes a BA in psychology from Colorado State University in 1970. She also completed The Art of the Cold Call. Nancy is a member of Toastmasters International.",
+ "reportsTo" : 2,
+ "territoryIDs" : [
+ 6897,
+ 19713
+ ]
+ },
+ {
+ "employeeID" : 3,
+ "lastName" : "Leverling",
+ "firstName" : "Janet",
+ "title" : "Sales Representative",
+ "titleOfCourtesy" : "Ms.",
+ "birthDate" : "1963-08-30 00:00:00.000",
+ "hireDate" : "1992-04-01 00:00:00.000",
+ "address" : {
+ "street" : "722 Moss Bay Blvd.",
+ "city" : "Kirkland",
+ "region" : "WA",
+ "postalCode" : 98033,
+ "country" : "USA",
+ "phone" : "(206) 555-3412"
+ },
+ "notes" : "Janet has a BS degree in chemistry from Boston College (1984). She has also completed a certificate program in food retailing management. Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.",
+ "reportsTo" : 2,
+ "territoryIDs" : [
+ 30346,
+ 31406,
+ 32859,
+ 33607
+ ]
+ },
+ {
+ "employeeID" : 4,
+ "lastName" : "Peacock",
+ "firstName" : "Margaret",
+ "title" : "Sales Representative",
+ "titleOfCourtesy" : "Mrs.",
+ "birthDate" : "1937-09-19 00:00:00.000",
+ "hireDate" : "1993-05-03 00:00:00.000",
+ "address" : {
+ "street" : "4110 Old Redmond Rd.",
+ "city" : "Redmond",
+ "region" : "WA",
+ "postalCode" : 98052,
+ "country" : "USA",
+ "phone" : "(206) 555-8122"
+ },
+ "notes" : "Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American Institute of Culinary Arts (1966). She was assigned to the London office temporarily from July through November 1992.",
+ "reportsTo" : 2,
+ "territoryIDs" : [
+ 20852,
+ 27403,
+ 27511
+ ]
+ },
+ {
+ "employeeID" : 6,
+ "lastName" : "Suyama",
+ "firstName" : "Michael",
+ "title" : "Sales Representative",
+ "titleOfCourtesy" : "Mr.",
+ "birthDate" : "1963-07-02 00:00:00.000",
+ "hireDate" : "1993-10-17 00:00:00.000",
+ "address" : {
+ "street" : "Coventry House Miner Rd.",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "EC2 7JR",
+ "country" : "UK",
+ "phone" : "(71) 555-7773"
+ },
+ "notes" : "Michael is a graduate of Sussex University (MA Economics 1983) and the University of California at Los Angeles (MBA marketing 1986). He has also taken the courses Multi-Cultural Selling and Time Management for the Sales Professional.",
+ "reportsTo" : 5,
+ "territoryIDs" : [
+ 85014,
+ 85251,
+ 98004,
+ 98104,
+ 98052
+ ]
+ },
+ {
+ "employeeID" : 7,
+ "lastName" : "King",
+ "firstName" : "Robert",
+ "title" : "Sales Representative",
+ "titleOfCourtesy" : "Mr.",
+ "birthDate" : "1960-05-29 00:00:00.000",
+ "hireDate" : "1994-01-02 00:00:00.000",
+ "address" : {
+ "street" : "Edgeham Hollow Winchester Way",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "RG1 9SP",
+ "country" : "UK",
+ "phone" : "(71) 555-5598"
+ },
+ "notes" : "Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the University of Michigan in 1992 the year he joined the company.",
+ "reportsTo" : 5,
+ "territoryIDs" : [
+ 60601,
+ 80202,
+ 80909,
+ 90405,
+ 94025,
+ 94105,
+ 95008,
+ 95054,
+ 95060,
+ 60179
+ ]
+ },
+ {
+ "employeeID" : 8,
+ "lastName" : "Callahan",
+ "firstName" : "Laura",
+ "title" : "Inside Sales Coordinator",
+ "titleOfCourtesy" : "Ms.",
+ "birthDate" : "1958-01-09 00:00:00.000",
+ "hireDate" : "1994-03-05 00:00:00.000",
+ "address" : {
+ "street" : "4726 11th Ave. N.E.",
+ "city" : "Seattle",
+ "region" : "WA",
+ "postalCode" : 98105,
+ "country" : "USA",
+ "phone" : "(206) 555-1189"
+ },
+ "notes" : "Laura received a BA in psychology from the University of Washington. She has also completed a course in business French. She reads and writes French.",
+ "reportsTo" : 2,
+ "territoryIDs" : [
+ 19428,
+ 44122,
+ 45839,
+ 53404
+ ]
+ },
+ {
+ "employeeID" : 9,
+ "lastName" : "Dodsworth",
+ "firstName" : "Anne",
+ "title" : "Sales Representative",
+ "titleOfCourtesy" : "Ms.",
+ "birthDate" : "1966-01-27 00:00:00.000",
+ "hireDate" : "1994-11-15 00:00:00.000",
+ "address" : {
+ "street" : "7 Houndstooth Rd.",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "WG2 7LT",
+ "country" : "UK",
+ "phone" : "(71) 555-4444"
+ },
+ "notes" : "Anne has a BA degree in English from St. Lawrence College. She is fluent in French and German.",
+ "reportsTo" : 5,
+ "territoryIDs" : [
+ 3049,
+ 3801,
+ 48075,
+ 48084,
+ 48304,
+ 55113,
+ 55439
+ ]
+ }
+]
diff --git a/vue-options-api-demos/grid/shared/es.json b/vue-options-api-demos/grid/shared/es.json
new file mode 100644
index 00000000..72eb2b1c
--- /dev/null
+++ b/vue-options-api-demos/grid/shared/es.json
@@ -0,0 +1,55 @@
+{
+ "datepicker": {
+ "toggleCalendar": "Alternar calendario"
+ },
+ "calendar": {
+ "today": "Hoy"
+ },
+ "dateinput": {
+ "increment": "Incrementar valor",
+ "decrement": "Disminuir valor"
+ },
+ "numerictextbox": {
+ "increment": "Incrementar valor",
+ "decrement": "Disminuir valor"
+ },
+ "grid": {
+ "groupPanelEmpty": "Arrastre el título de una columna y suéltelo aquí para agrupar por ese criterio",
+ "noRecords": "No hay datos disponibles.",
+ "pagerFirstPage": "Ir a la primera página",
+ "pagerPreviousPage": "Ir a la página anterior",
+ "pagerNextPage": "Ir a la página siguiente",
+ "pagerLastPage": "Ir a la última página",
+ "pagerPage": "Página",
+ "pagerOf": "de",
+ "pagerTotalPages": "{0}",
+ "pagerItems": "ítems",
+ "pagerInfo": "{0} - {1} de {2} ítems",
+ "pagerItemsPerPage": "ítems por página",
+ "filterEqOperator": "Es igual a",
+ "filterNotEqOperator": "No es igual a",
+ "filterIsNullOperator": "Es nulo",
+ "filterIsNotNullOperator": "No es nulo",
+ "filterIsEmptyOperator": "Está vacío",
+ "filterIsNotEmptyOperator": "No está vacío",
+ "filterStartsWithOperator": "Comienza con",
+ "filterContainsOperator": "Contiene",
+ "filterNotContainsOperator": "No contiene",
+ "filterEndsWithOperator": "Termina en",
+ "filterGteOperator": "Es mayor o igual que",
+ "filterGtOperator": "Es mayor que",
+ "filterLteOperator": "Es menor o igual que",
+ "filterLtOperator": "Es menor o igual que",
+ "filterIsTrue": "Sí",
+ "filterIsFalse": "No",
+ "filterBooleanAll": "(Todas)",
+ "filterAfterOrEqualOperator": "Es posterior o igual a",
+ "filterAfterOperator": "Es posterior",
+ "filterBeforeOperator": "Es anterior",
+ "filterBeforeOrEqualOperator": "Es anterior o igual a",
+ "filterFilterButton": "Filtrar",
+ "filterClearButton": "Limpiar filtros",
+ "filterAndLogic": "Y",
+ "filterOrLogic": "O"
+ }
+}
diff --git a/vue-options-api-demos/grid/shared/keys.js b/vue-options-api-demos/grid/shared/keys.js
new file mode 100644
index 00000000..592fcc49
--- /dev/null
+++ b/vue-options-api-demos/grid/shared/keys.js
@@ -0,0 +1,21 @@
+const Keys = {
+ backspace: 8,
+ tab: 9,
+ enter: 13,
+ shift: 16,
+ esc: 27,
+ space: 32,
+ pageUp: 33,
+ pageDown: 34,
+ end: 35,
+ home: 36,
+ left: 37,
+ up: 38,
+ right: 39,
+ down: 40,
+ delete: 46
+};
+
+export {
+ Keys
+};
diff --git a/vue-options-api-demos/grid/shared/orders.json b/vue-options-api-demos/grid/shared/orders.json
new file mode 100644
index 00000000..9d8d8ac9
--- /dev/null
+++ b/vue-options-api-demos/grid/shared/orders.json
@@ -0,0 +1,25576 @@
+[
+ {
+ "orderID": 10271,
+ "customerID": "SPLIR",
+ "employeeID": 6,
+ "orderDate": "1996-08-01 00:00:00.000",
+ "requiredDate": "1996-08-29 00:00:00.000",
+ "shippedDate": "1996-08-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.54,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10266,
+ "customerID": "WARTH",
+ "employeeID": 3,
+ "orderDate": "1996-07-26 00:00:00.000",
+ "requiredDate": "1996-09-06 00:00:00.000",
+ "shippedDate": "1996-07-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 25.73,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 30.4,
+ "quantity": 12,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10279,
+ "customerID": "LEHMS",
+ "employeeID": 8,
+ "orderDate": "1996-08-13 00:00:00.000",
+ "requiredDate": "1996-09-10 00:00:00.000",
+ "shippedDate": "1996-08-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.83,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10292,
+ "customerID": "TRADH",
+ "employeeID": 1,
+ "orderDate": "1996-08-28 00:00:00.000",
+ "requiredDate": "1996-09-25 00:00:00.000",
+ "shippedDate": "1996-09-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.35,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10295,
+ "customerID": "VINET",
+ "employeeID": 2,
+ "orderDate": "1996-09-02 00:00:00.000",
+ "requiredDate": "1996-09-30 00:00:00.000",
+ "shippedDate": "1996-09-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.15,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10313,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1996-09-24 00:00:00.000",
+ "requiredDate": "1996-10-22 00:00:00.000",
+ "shippedDate": "1996-10-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.96,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10317,
+ "customerID": "LONEP",
+ "employeeID": 6,
+ "orderDate": "1996-09-30 00:00:00.000",
+ "requiredDate": "1996-10-28 00:00:00.000",
+ "shippedDate": "1996-10-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.69,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10322,
+ "customerID": "PERIC",
+ "employeeID": 7,
+ "orderDate": "1996-10-04 00:00:00.000",
+ "requiredDate": "1996-11-01 00:00:00.000",
+ "shippedDate": "1996-10-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.4,
+ "shipName": "Pericles Comidas clásicas",
+ "shipAddress": {
+ "street": "Calle Dr. Jorge Cash 321",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10320,
+ "customerID": "WARTH",
+ "employeeID": 5,
+ "orderDate": "1996-10-03 00:00:00.000",
+ "requiredDate": "1996-10-17 00:00:00.000",
+ "shippedDate": "1996-10-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 34.57,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10321,
+ "customerID": "ISLAT",
+ "employeeID": 3,
+ "orderDate": "1996-10-03 00:00:00.000",
+ "requiredDate": "1996-10-31 00:00:00.000",
+ "shippedDate": "1996-10-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.43,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10336,
+ "customerID": "PRINI",
+ "employeeID": 7,
+ "orderDate": "1996-10-23 00:00:00.000",
+ "requiredDate": "1996-11-20 00:00:00.000",
+ "shippedDate": "1996-10-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 15.51,
+ "shipName": "Princesa Isabel Vinhos",
+ "shipAddress": {
+ "street": "Estrada da saúde n. 58",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1756,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 18,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10349,
+ "customerID": "SPLIR",
+ "employeeID": 7,
+ "orderDate": "1996-11-08 00:00:00.000",
+ "requiredDate": "1996-12-06 00:00:00.000",
+ "shippedDate": "1996-11-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.63,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10331,
+ "customerID": "BONAP",
+ "employeeID": 9,
+ "orderDate": "1996-10-16 00:00:00.000",
+ "requiredDate": "1996-11-27 00:00:00.000",
+ "shippedDate": "1996-10-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 10.19,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10365,
+ "customerID": "ANTON",
+ "employeeID": 3,
+ "orderDate": "1996-11-27 00:00:00.000",
+ "requiredDate": "1996-12-25 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 22,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10371,
+ "customerID": "LAMAI",
+ "employeeID": 1,
+ "orderDate": "1996-12-03 00:00:00.000",
+ "requiredDate": "1996-12-31 00:00:00.000",
+ "shippedDate": "1996-12-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.45,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 6,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10376,
+ "customerID": "MEREP",
+ "employeeID": 1,
+ "orderDate": "1996-12-09 00:00:00.000",
+ "requiredDate": "1997-01-06 00:00:00.000",
+ "shippedDate": "1996-12-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 20.39,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 42,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10378,
+ "customerID": "FOLKO",
+ "employeeID": 5,
+ "orderDate": "1996-12-10 00:00:00.000",
+ "requiredDate": "1997-01-07 00:00:00.000",
+ "shippedDate": "1996-12-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 5.44,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10392,
+ "customerID": "PICCO",
+ "employeeID": 2,
+ "orderDate": "1996-12-24 00:00:00.000",
+ "requiredDate": "1997-01-21 00:00:00.000",
+ "shippedDate": "1997-01-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 122.46,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10391,
+ "customerID": "DRACD",
+ "employeeID": 3,
+ "orderDate": "1996-12-23 00:00:00.000",
+ "requiredDate": "1997-01-20 00:00:00.000",
+ "shippedDate": "1996-12-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 5.45,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10405,
+ "customerID": "LINOD",
+ "employeeID": 1,
+ "orderDate": "1997-01-06 00:00:00.000",
+ "requiredDate": "1997-02-03 00:00:00.000",
+ "shippedDate": "1997-01-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 34.82,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 8,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10412,
+ "customerID": "WARTH",
+ "employeeID": 8,
+ "orderDate": "1997-01-13 00:00:00.000",
+ "requiredDate": "1997-02-10 00:00:00.000",
+ "shippedDate": "1997-01-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.77,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10422,
+ "customerID": "FRANS",
+ "employeeID": 2,
+ "orderDate": "1997-01-22 00:00:00.000",
+ "requiredDate": "1997-02-19 00:00:00.000",
+ "shippedDate": "1997-01-31 00:00:00.000",
+ "shipVia": 1,
+ "freight": 3.02,
+ "shipName": "Franchi S.p.A.",
+ "shipAddress": {
+ "street": "Via Monte Bianco 34",
+ "city": "Torino",
+ "region": "NULL",
+ "postalCode": 10100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10433,
+ "customerID": "PRINI",
+ "employeeID": 3,
+ "orderDate": "1997-02-03 00:00:00.000",
+ "requiredDate": "1997-03-03 00:00:00.000",
+ "shippedDate": "1997-03-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 73.83,
+ "shipName": "Princesa Isabel Vinhos",
+ "shipAddress": {
+ "street": "Estrada da saúde n. 58",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1756,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10427,
+ "customerID": "PICCO",
+ "employeeID": 4,
+ "orderDate": "1997-01-27 00:00:00.000",
+ "requiredDate": "1997-02-24 00:00:00.000",
+ "shippedDate": "1997-03-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 31.29,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10437,
+ "customerID": "WARTH",
+ "employeeID": 8,
+ "orderDate": "1997-02-05 00:00:00.000",
+ "requiredDate": "1997-03-05 00:00:00.000",
+ "shippedDate": "1997-02-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 19.97,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10428,
+ "customerID": "REGGC",
+ "employeeID": 7,
+ "orderDate": "1997-01-28 00:00:00.000",
+ "requiredDate": "1997-02-25 00:00:00.000",
+ "shippedDate": "1997-02-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.09,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10441,
+ "customerID": "OLDWO",
+ "employeeID": 3,
+ "orderDate": "1997-02-10 00:00:00.000",
+ "requiredDate": "1997-03-24 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 73.02,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 27,
+ "unitPrice": 35.1,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10457,
+ "customerID": "KOENE",
+ "employeeID": 2,
+ "orderDate": "1997-02-25 00:00:00.000",
+ "requiredDate": "1997-03-25 00:00:00.000",
+ "shippedDate": "1997-03-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.57,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 36,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10478,
+ "customerID": "VICTE",
+ "employeeID": 2,
+ "orderDate": "1997-03-18 00:00:00.000",
+ "requiredDate": "1997-04-01 00:00:00.000",
+ "shippedDate": "1997-03-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.81,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10482,
+ "customerID": "LAZYK",
+ "employeeID": 1,
+ "orderDate": "1997-03-21 00:00:00.000",
+ "requiredDate": "1997-04-18 00:00:00.000",
+ "shippedDate": "1997-04-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7.48,
+ "shipName": "Lazy K Kountry Store",
+ "shipAddress": {
+ "street": "12 Orchestra Terrace",
+ "city": "Walla Walla",
+ "region": "WA",
+ "postalCode": 99362,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10494,
+ "customerID": "COMMI",
+ "employeeID": 4,
+ "orderDate": "1997-04-02 00:00:00.000",
+ "requiredDate": "1997-04-30 00:00:00.000",
+ "shippedDate": "1997-04-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 65.99,
+ "shipName": "Comércio Mineiro",
+ "shipAddress": {
+ "street": "Av. dos Lusíadas 23",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05432-043",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10501,
+ "customerID": "BLAUS",
+ "employeeID": 9,
+ "orderDate": "1997-04-09 00:00:00.000",
+ "requiredDate": "1997-05-07 00:00:00.000",
+ "shippedDate": "1997-04-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 8.85,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10496,
+ "customerID": "TRADH",
+ "employeeID": 7,
+ "orderDate": "1997-04-04 00:00:00.000",
+ "requiredDate": "1997-05-02 00:00:00.000",
+ "shippedDate": "1997-04-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 46.77,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10509,
+ "customerID": "BLAUS",
+ "employeeID": 4,
+ "orderDate": "1997-04-17 00:00:00.000",
+ "requiredDate": "1997-05-15 00:00:00.000",
+ "shippedDate": "1997-04-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.15,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10505,
+ "customerID": "MEREP",
+ "employeeID": 3,
+ "orderDate": "1997-04-14 00:00:00.000",
+ "requiredDate": "1997-05-12 00:00:00.000",
+ "shippedDate": "1997-04-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7.13,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10545,
+ "customerID": "LAZYK",
+ "employeeID": 8,
+ "orderDate": "1997-05-22 00:00:00.000",
+ "requiredDate": "1997-06-19 00:00:00.000",
+ "shippedDate": "1997-06-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 11.92,
+ "shipName": "Lazy K Kountry Store",
+ "shipAddress": {
+ "street": "12 Orchestra Terrace",
+ "city": "Walla Walla",
+ "region": "WA",
+ "postalCode": 99362,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10556,
+ "customerID": "SIMOB",
+ "employeeID": 2,
+ "orderDate": "1997-06-03 00:00:00.000",
+ "requiredDate": "1997-07-15 00:00:00.000",
+ "shippedDate": "1997-06-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 9.8,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10568,
+ "customerID": "GALED",
+ "employeeID": 3,
+ "orderDate": "1997-06-13 00:00:00.000",
+ "requiredDate": "1997-07-11 00:00:00.000",
+ "shippedDate": "1997-07-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 6.54,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10581,
+ "customerID": "FAMIA",
+ "employeeID": 3,
+ "orderDate": "1997-06-26 00:00:00.000",
+ "requiredDate": "1997-07-24 00:00:00.000",
+ "shippedDate": "1997-07-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 3.01,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10585,
+ "customerID": "WELLI",
+ "employeeID": 7,
+ "orderDate": "1997-07-01 00:00:00.000",
+ "requiredDate": "1997-07-29 00:00:00.000",
+ "shippedDate": "1997-07-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 13.41,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10586,
+ "customerID": "REGGC",
+ "employeeID": 9,
+ "orderDate": "1997-07-02 00:00:00.000",
+ "requiredDate": "1997-07-30 00:00:00.000",
+ "shippedDate": "1997-07-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.48,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 4,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10589,
+ "customerID": "GREAL",
+ "employeeID": 8,
+ "orderDate": "1997-07-04 00:00:00.000",
+ "requiredDate": "1997-08-01 00:00:00.000",
+ "shippedDate": "1997-07-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.42,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10584,
+ "customerID": "BLONP",
+ "employeeID": 4,
+ "orderDate": "1997-06-30 00:00:00.000",
+ "requiredDate": "1997-07-28 00:00:00.000",
+ "shippedDate": "1997-07-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 59.14,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 50,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10599,
+ "customerID": "BSBEV",
+ "employeeID": 6,
+ "orderDate": "1997-07-15 00:00:00.000",
+ "requiredDate": "1997-08-26 00:00:00.000",
+ "shippedDate": "1997-07-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 29.98,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10602,
+ "customerID": "VAFFE",
+ "employeeID": 8,
+ "orderDate": "1997-07-17 00:00:00.000",
+ "requiredDate": "1997-08-14 00:00:00.000",
+ "shippedDate": "1997-07-22 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.92,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 5,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10608,
+ "customerID": "TOMSP",
+ "employeeID": 4,
+ "orderDate": "1997-07-23 00:00:00.000",
+ "requiredDate": "1997-08-20 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 27.79,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10610,
+ "customerID": "LAMAI",
+ "employeeID": 8,
+ "orderDate": "1997-07-25 00:00:00.000",
+ "requiredDate": "1997-08-22 00:00:00.000",
+ "shippedDate": "1997-08-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 26.78,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 21,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10615,
+ "customerID": "WILMK",
+ "employeeID": 2,
+ "orderDate": "1997-07-30 00:00:00.000",
+ "requiredDate": "1997-08-27 00:00:00.000",
+ "shippedDate": "1997-08-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.75,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10617,
+ "customerID": "GREAL",
+ "employeeID": 4,
+ "orderDate": "1997-07-31 00:00:00.000",
+ "requiredDate": "1997-08-28 00:00:00.000",
+ "shippedDate": "1997-08-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 18.53,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10628,
+ "customerID": "BLONP",
+ "employeeID": 4,
+ "orderDate": "1997-08-12 00:00:00.000",
+ "requiredDate": "1997-09-09 00:00:00.000",
+ "shippedDate": "1997-08-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 30.36,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10631,
+ "customerID": "LAMAI",
+ "employeeID": 8,
+ "orderDate": "1997-08-14 00:00:00.000",
+ "requiredDate": "1997-09-11 00:00:00.000",
+ "shippedDate": "1997-08-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.87,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 8,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10639,
+ "customerID": "SANTG",
+ "employeeID": 7,
+ "orderDate": "1997-08-20 00:00:00.000",
+ "requiredDate": "1997-09-17 00:00:00.000",
+ "shippedDate": "1997-08-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 38.64,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10655,
+ "customerID": "REGGC",
+ "employeeID": 1,
+ "orderDate": "1997-09-03 00:00:00.000",
+ "requiredDate": "1997-10-01 00:00:00.000",
+ "shippedDate": "1997-09-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.41,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10660,
+ "customerID": "HUNGC",
+ "employeeID": 8,
+ "orderDate": "1997-09-08 00:00:00.000",
+ "requiredDate": "1997-10-06 00:00:00.000",
+ "shippedDate": "1997-10-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 111.29,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10662,
+ "customerID": "LONEP",
+ "employeeID": 3,
+ "orderDate": "1997-09-09 00:00:00.000",
+ "requiredDate": "1997-10-07 00:00:00.000",
+ "shippedDate": "1997-09-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.28,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10669,
+ "customerID": "SIMOB",
+ "employeeID": 2,
+ "orderDate": "1997-09-15 00:00:00.000",
+ "requiredDate": "1997-10-13 00:00:00.000",
+ "shippedDate": "1997-09-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 24.39,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10679,
+ "customerID": "BLONP",
+ "employeeID": 8,
+ "orderDate": "1997-09-23 00:00:00.000",
+ "requiredDate": "1997-10-21 00:00:00.000",
+ "shippedDate": "1997-09-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 27.94,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10683,
+ "customerID": "DUMON",
+ "employeeID": 2,
+ "orderDate": "1997-09-26 00:00:00.000",
+ "requiredDate": "1997-10-24 00:00:00.000",
+ "shippedDate": "1997-10-01 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.4,
+ "shipName": "Du monde entier",
+ "shipAddress": {
+ "street": "67 rue des Cinquante Otages",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10674,
+ "customerID": "ISLAT",
+ "employeeID": 4,
+ "orderDate": "1997-09-18 00:00:00.000",
+ "requiredDate": "1997-10-16 00:00:00.000",
+ "shippedDate": "1997-09-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.9,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10692,
+ "customerID": "ALFKI",
+ "employeeID": 4,
+ "orderDate": "1997-10-03 00:00:00.000",
+ "requiredDate": "1997-10-31 00:00:00.000",
+ "shippedDate": "1997-10-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 61.02,
+ "shipName": "Alfred's Futterkiste",
+ "shipAddress": {
+ "street": "Obere Str. 57",
+ "city": "Berlin",
+ "region": "NULL",
+ "postalCode": 12209,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10689,
+ "customerID": "BERGS",
+ "employeeID": 1,
+ "orderDate": "1997-10-01 00:00:00.000",
+ "requiredDate": "1997-10-29 00:00:00.000",
+ "shippedDate": "1997-10-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.42,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10699,
+ "customerID": "MORGK",
+ "employeeID": 3,
+ "orderDate": "1997-10-09 00:00:00.000",
+ "requiredDate": "1997-11-06 00:00:00.000",
+ "shippedDate": "1997-10-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.58,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10721,
+ "customerID": "QUICK",
+ "employeeID": 5,
+ "orderDate": "1997-10-29 00:00:00.000",
+ "requiredDate": "1997-11-26 00:00:00.000",
+ "shippedDate": "1997-10-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 48.92,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 50,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10723,
+ "customerID": "WHITC",
+ "employeeID": 3,
+ "orderDate": "1997-10-30 00:00:00.000",
+ "requiredDate": "1997-11-27 00:00:00.000",
+ "shippedDate": "1997-11-25 00:00:00.000",
+ "shipVia": 1,
+ "freight": 21.72,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10738,
+ "customerID": "SPECD",
+ "employeeID": 2,
+ "orderDate": "1997-11-12 00:00:00.000",
+ "requiredDate": "1997-12-10 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.91,
+ "shipName": "Spécialités du monde",
+ "shipAddress": {
+ "street": "25 rue Lauriston",
+ "city": "Paris",
+ "region": "NULL",
+ "postalCode": 75016,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10741,
+ "customerID": "AROUT",
+ "employeeID": 4,
+ "orderDate": "1997-11-14 00:00:00.000",
+ "requiredDate": "1997-11-28 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 10.96,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 15,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10732,
+ "customerID": "BONAP",
+ "employeeID": 3,
+ "orderDate": "1997-11-06 00:00:00.000",
+ "requiredDate": "1997-12-04 00:00:00.000",
+ "shippedDate": "1997-11-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.97,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10743,
+ "customerID": "AROUT",
+ "employeeID": 1,
+ "orderDate": "1997-11-17 00:00:00.000",
+ "requiredDate": "1997-12-15 00:00:00.000",
+ "shippedDate": "1997-11-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 23.72,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 28,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10754,
+ "customerID": "MAGAA",
+ "employeeID": 6,
+ "orderDate": "1997-11-25 00:00:00.000",
+ "requiredDate": "1997-12-23 00:00:00.000",
+ "shippedDate": "1997-11-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 2.38,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10744,
+ "customerID": "VAFFE",
+ "employeeID": 6,
+ "orderDate": "1997-11-17 00:00:00.000",
+ "requiredDate": "1997-12-15 00:00:00.000",
+ "shippedDate": "1997-11-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 69.19,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10765,
+ "customerID": "QUICK",
+ "employeeID": 3,
+ "orderDate": "1997-12-04 00:00:00.000",
+ "requiredDate": "1998-01-01 00:00:00.000",
+ "shippedDate": "1997-12-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 42.74,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 80,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10770,
+ "customerID": "HANAR",
+ "employeeID": 8,
+ "orderDate": "1997-12-09 00:00:00.000",
+ "requiredDate": "1998-01-06 00:00:00.000",
+ "shippedDate": "1997-12-17 00:00:00.000",
+ "shipVia": 3,
+ "freight": 5.32,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10771,
+ "customerID": "ERNSH",
+ "employeeID": 9,
+ "orderDate": "1997-12-10 00:00:00.000",
+ "requiredDate": "1998-01-07 00:00:00.000",
+ "shippedDate": "1998-01-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 11.19,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10767,
+ "customerID": "SUPRD",
+ "employeeID": 4,
+ "orderDate": "1997-12-05 00:00:00.000",
+ "requiredDate": "1998-01-02 00:00:00.000",
+ "shippedDate": "1997-12-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.59,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10782,
+ "customerID": "CACTU",
+ "employeeID": 9,
+ "orderDate": "1997-12-17 00:00:00.000",
+ "requiredDate": "1998-01-14 00:00:00.000",
+ "shippedDate": "1997-12-22 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.1,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10777,
+ "customerID": "GOURL",
+ "employeeID": 7,
+ "orderDate": "1997-12-15 00:00:00.000",
+ "requiredDate": "1997-12-29 00:00:00.000",
+ "shippedDate": "1998-01-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.01,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10778,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1997-12-16 00:00:00.000",
+ "requiredDate": "1998-01-13 00:00:00.000",
+ "shippedDate": "1997-12-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 6.79,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10797,
+ "customerID": "DRACD",
+ "employeeID": 7,
+ "orderDate": "1997-12-25 00:00:00.000",
+ "requiredDate": "1998-01-22 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 33.35,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10807,
+ "customerID": "FRANS",
+ "employeeID": 4,
+ "orderDate": "1997-12-31 00:00:00.000",
+ "requiredDate": "1998-01-28 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.36,
+ "shipName": "Franchi S.p.A.",
+ "shipAddress": {
+ "street": "Via Monte Bianco 34",
+ "city": "Torino",
+ "region": "NULL",
+ "postalCode": 10100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10809,
+ "customerID": "WELLI",
+ "employeeID": 7,
+ "orderDate": "1998-01-01 00:00:00.000",
+ "requiredDate": "1998-01-29 00:00:00.000",
+ "shippedDate": "1998-01-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.87,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10815,
+ "customerID": "SAVEA",
+ "employeeID": 2,
+ "orderDate": "1998-01-05 00:00:00.000",
+ "requiredDate": "1998-02-02 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 14.62,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10820,
+ "customerID": "RATTC",
+ "employeeID": 3,
+ "orderDate": "1998-01-07 00:00:00.000",
+ "requiredDate": "1998-02-04 00:00:00.000",
+ "shippedDate": "1998-01-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 37.52,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10843,
+ "customerID": "VICTE",
+ "employeeID": 4,
+ "orderDate": "1998-01-21 00:00:00.000",
+ "requiredDate": "1998-02-18 00:00:00.000",
+ "shippedDate": "1998-01-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 9.26,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 4,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10844,
+ "customerID": "PICCO",
+ "employeeID": 8,
+ "orderDate": "1998-01-21 00:00:00.000",
+ "requiredDate": "1998-02-18 00:00:00.000",
+ "shippedDate": "1998-01-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.22,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10853,
+ "customerID": "BLAUS",
+ "employeeID": 9,
+ "orderDate": "1998-01-27 00:00:00.000",
+ "requiredDate": "1998-02-24 00:00:00.000",
+ "shippedDate": "1998-02-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 53.83,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10874,
+ "customerID": "GODOS",
+ "employeeID": 5,
+ "orderDate": "1998-02-06 00:00:00.000",
+ "requiredDate": "1998-03-06 00:00:00.000",
+ "shippedDate": "1998-02-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 19.58,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10867,
+ "customerID": "LONEP",
+ "employeeID": 6,
+ "orderDate": "1998-02-03 00:00:00.000",
+ "requiredDate": "1998-03-17 00:00:00.000",
+ "shippedDate": "1998-02-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.93,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10878,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1998-02-10 00:00:00.000",
+ "requiredDate": "1998-03-10 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 46.69,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10883,
+ "customerID": "LONEP",
+ "employeeID": 8,
+ "orderDate": "1998-02-12 00:00:00.000",
+ "requiredDate": "1998-03-12 00:00:00.000",
+ "shippedDate": "1998-02-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.53,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10887,
+ "customerID": "GALED",
+ "employeeID": 8,
+ "orderDate": "1998-02-13 00:00:00.000",
+ "requiredDate": "1998-03-13 00:00:00.000",
+ "shippedDate": "1998-02-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.25,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10891,
+ "customerID": "LEHMS",
+ "employeeID": 7,
+ "orderDate": "1998-02-17 00:00:00.000",
+ "requiredDate": "1998-03-17 00:00:00.000",
+ "shippedDate": "1998-02-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 20.37,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10892,
+ "customerID": "MAISD",
+ "employeeID": 4,
+ "orderDate": "1998-02-17 00:00:00.000",
+ "requiredDate": "1998-03-17 00:00:00.000",
+ "shippedDate": "1998-02-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 120.27,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10881,
+ "customerID": "CACTU",
+ "employeeID": 4,
+ "orderDate": "1998-02-11 00:00:00.000",
+ "requiredDate": "1998-03-11 00:00:00.000",
+ "shippedDate": "1998-02-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.84,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10900,
+ "customerID": "WELLI",
+ "employeeID": 1,
+ "orderDate": "1998-02-20 00:00:00.000",
+ "requiredDate": "1998-03-20 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.66,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 3,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10905,
+ "customerID": "WELLI",
+ "employeeID": 9,
+ "orderDate": "1998-02-24 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-03-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.72,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10914,
+ "customerID": "QUEEN",
+ "employeeID": 6,
+ "orderDate": "1998-02-27 00:00:00.000",
+ "requiredDate": "1998-03-27 00:00:00.000",
+ "shippedDate": "1998-03-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 21.19,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10906,
+ "customerID": "WOLZA",
+ "employeeID": 4,
+ "orderDate": "1998-02-25 00:00:00.000",
+ "requiredDate": "1998-03-11 00:00:00.000",
+ "shippedDate": "1998-03-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 26.29,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10907,
+ "customerID": "SPECD",
+ "employeeID": 6,
+ "orderDate": "1998-02-25 00:00:00.000",
+ "requiredDate": "1998-03-25 00:00:00.000",
+ "shippedDate": "1998-02-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 9.19,
+ "shipName": "Spécialités du monde",
+ "shipAddress": {
+ "street": "25 rue Lauriston",
+ "city": "Paris",
+ "region": "NULL",
+ "postalCode": 75016,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10920,
+ "customerID": "AROUT",
+ "employeeID": 4,
+ "orderDate": "1998-03-03 00:00:00.000",
+ "requiredDate": "1998-03-31 00:00:00.000",
+ "shippedDate": "1998-03-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 29.61,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 50,
+ "unitPrice": 16.25,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10934,
+ "customerID": "LEHMS",
+ "employeeID": 3,
+ "orderDate": "1998-03-09 00:00:00.000",
+ "requiredDate": "1998-04-06 00:00:00.000",
+ "shippedDate": "1998-03-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 32.01,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10936,
+ "customerID": "GREAL",
+ "employeeID": 3,
+ "orderDate": "1998-03-09 00:00:00.000",
+ "requiredDate": "1998-04-06 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 33.68,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10942,
+ "customerID": "REGGC",
+ "employeeID": 9,
+ "orderDate": "1998-03-11 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 17.95,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10947,
+ "customerID": "BSBEV",
+ "employeeID": 3,
+ "orderDate": "1998-03-13 00:00:00.000",
+ "requiredDate": "1998-04-10 00:00:00.000",
+ "shippedDate": "1998-03-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.26,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10955,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1998-03-17 00:00:00.000",
+ "requiredDate": "1998-04-14 00:00:00.000",
+ "shippedDate": "1998-03-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.26,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 12,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10950,
+ "customerID": "MAGAA",
+ "employeeID": 1,
+ "orderDate": "1998-03-16 00:00:00.000",
+ "requiredDate": "1998-04-13 00:00:00.000",
+ "shippedDate": "1998-03-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.5,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10963,
+ "customerID": "FURIB",
+ "employeeID": 9,
+ "orderDate": "1998-03-19 00:00:00.000",
+ "requiredDate": "1998-04-16 00:00:00.000",
+ "shippedDate": "1998-03-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 2.7,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 2,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10969,
+ "customerID": "COMMI",
+ "employeeID": 1,
+ "orderDate": "1998-03-23 00:00:00.000",
+ "requiredDate": "1998-04-20 00:00:00.000",
+ "shippedDate": "1998-03-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.21,
+ "shipName": "Comércio Mineiro",
+ "shipAddress": {
+ "street": "Av. dos Lusíadas 23",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05432-043",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10970,
+ "customerID": "BOLID",
+ "employeeID": 9,
+ "orderDate": "1998-03-24 00:00:00.000",
+ "requiredDate": "1998-04-07 00:00:00.000",
+ "shippedDate": "1998-04-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.16,
+ "shipName": "Bólido Comidas preparadas",
+ "shipAddress": {
+ "street": "C/ Araquil 67",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28023,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10971,
+ "customerID": "FRANR",
+ "employeeID": 2,
+ "orderDate": "1998-03-24 00:00:00.000",
+ "requiredDate": "1998-04-21 00:00:00.000",
+ "shippedDate": "1998-04-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 121.82,
+ "shipName": "France restauration",
+ "shipAddress": {
+ "street": "54 rue Royale",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10965,
+ "customerID": "OLDWO",
+ "employeeID": 6,
+ "orderDate": "1998-03-20 00:00:00.000",
+ "requiredDate": "1998-04-17 00:00:00.000",
+ "shippedDate": "1998-03-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 144.38,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10974,
+ "customerID": "SPLIR",
+ "employeeID": 3,
+ "orderDate": "1998-03-25 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-04-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 12.96,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10980,
+ "customerID": "FOLKO",
+ "employeeID": 4,
+ "orderDate": "1998-03-27 00:00:00.000",
+ "requiredDate": "1998-05-08 00:00:00.000",
+ "shippedDate": "1998-04-17 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.26,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10981,
+ "customerID": "HANAR",
+ "employeeID": 1,
+ "orderDate": "1998-03-27 00:00:00.000",
+ "requiredDate": "1998-04-24 00:00:00.000",
+ "shippedDate": "1998-04-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 193.37,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10959,
+ "customerID": "GOURL",
+ "employeeID": 6,
+ "orderDate": "1998-03-18 00:00:00.000",
+ "requiredDate": "1998-04-29 00:00:00.000",
+ "shippedDate": "1998-03-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.98,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10992,
+ "customerID": "THEBI",
+ "employeeID": 1,
+ "orderDate": "1998-04-01 00:00:00.000",
+ "requiredDate": "1998-04-29 00:00:00.000",
+ "shippedDate": "1998-04-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.27,
+ "shipName": "The Big Cheese",
+ "shipAddress": {
+ "street": "89 Jefferson Way Suite 2",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97201,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10994,
+ "customerID": "VAFFE",
+ "employeeID": 2,
+ "orderDate": "1998-04-02 00:00:00.000",
+ "requiredDate": "1998-04-16 00:00:00.000",
+ "shippedDate": "1998-04-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 65.53,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 18,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10996,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1998-04-02 00:00:00.000",
+ "requiredDate": "1998-04-30 00:00:00.000",
+ "shippedDate": "1998-04-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.12,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11014,
+ "customerID": "LINOD",
+ "employeeID": 2,
+ "orderDate": "1998-04-10 00:00:00.000",
+ "requiredDate": "1998-05-08 00:00:00.000",
+ "shippedDate": "1998-04-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 23.6,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 28,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 11020,
+ "customerID": "OTTIK",
+ "employeeID": 2,
+ "orderDate": "1998-04-14 00:00:00.000",
+ "requiredDate": "1998-05-12 00:00:00.000",
+ "shippedDate": "1998-04-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 43.3,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 24,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 11040,
+ "customerID": "GREAL",
+ "employeeID": 4,
+ "orderDate": "1998-04-22 00:00:00.000",
+ "requiredDate": "1998-05-20 00:00:00.000",
+ "shippedDate": "NULL",
+ "shipVia": 3,
+ "freight": 18.84,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11043,
+ "customerID": "SPECD",
+ "employeeID": 5,
+ "orderDate": "1998-04-22 00:00:00.000",
+ "requiredDate": "1998-05-20 00:00:00.000",
+ "shippedDate": "1998-04-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.8,
+ "shipName": "Spécialités du monde",
+ "shipAddress": {
+ "street": "25 rue Lauriston",
+ "city": "Paris",
+ "region": "NULL",
+ "postalCode": 75016,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11044,
+ "customerID": "WOLZA",
+ "employeeID": 4,
+ "orderDate": "1998-04-23 00:00:00.000",
+ "requiredDate": "1998-05-21 00:00:00.000",
+ "shippedDate": "1998-05-01 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.72,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11048,
+ "customerID": "BOTTM",
+ "employeeID": 7,
+ "orderDate": "1998-04-24 00:00:00.000",
+ "requiredDate": "1998-05-22 00:00:00.000",
+ "shippedDate": "1998-04-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 24.12,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 42,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11037,
+ "customerID": "GODOS",
+ "employeeID": 7,
+ "orderDate": "1998-04-21 00:00:00.000",
+ "requiredDate": "1998-05-19 00:00:00.000",
+ "shippedDate": "1998-04-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 3.2,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11050,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1998-04-27 00:00:00.000",
+ "requiredDate": "1998-05-25 00:00:00.000",
+ "shippedDate": "1998-05-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 59.41,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 50,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 11057,
+ "customerID": "NORTS",
+ "employeeID": 3,
+ "orderDate": "1998-04-29 00:00:00.000",
+ "requiredDate": "1998-05-27 00:00:00.000",
+ "shippedDate": "1998-05-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.13,
+ "shipName": "North/South",
+ "shipAddress": {
+ "street": "South House 300 Queensbridge",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "SW7 1RZ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11061,
+ "customerID": "GREAL",
+ "employeeID": 4,
+ "orderDate": "1998-04-30 00:00:00.000",
+ "requiredDate": "1998-06-11 00:00:00.000",
+ "shippedDate": "NULL",
+ "shipVia": 3,
+ "freight": 14.01,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11051,
+ "customerID": "LAMAI",
+ "employeeID": 7,
+ "orderDate": "1998-04-27 00:00:00.000",
+ "requiredDate": "1998-05-25 00:00:00.000",
+ "shippedDate": "NULL",
+ "shipVia": 3,
+ "freight": 2.79,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 11067,
+ "customerID": "DRACD",
+ "employeeID": 1,
+ "orderDate": "1998-05-04 00:00:00.000",
+ "requiredDate": "1998-05-18 00:00:00.000",
+ "shippedDate": "1998-05-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.98,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11069,
+ "customerID": "TORTU",
+ "employeeID": 1,
+ "orderDate": "1998-05-04 00:00:00.000",
+ "requiredDate": "1998-06-01 00:00:00.000",
+ "shippedDate": "1998-05-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 15.67,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 11074,
+ "customerID": "SIMOB",
+ "employeeID": 7,
+ "orderDate": "1998-05-06 00:00:00.000",
+ "requiredDate": "1998-06-03 00:00:00.000",
+ "shippedDate": "NULL",
+ "shipVia": 2,
+ "freight": 18.44,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 14,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10248,
+ "customerID": "VINET",
+ "employeeID": 5,
+ "orderDate": "1996-07-04 00:00:00.000",
+ "requiredDate": "1996-08-01 00:00:00.000",
+ "shippedDate": "1996-07-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 32.38,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 14,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 9.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10249,
+ "customerID": "TOMSP",
+ "employeeID": 6,
+ "orderDate": "1996-07-05 00:00:00.000",
+ "requiredDate": "1996-08-16 00:00:00.000",
+ "shippedDate": "1996-07-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.61,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10250,
+ "customerID": "HANAR",
+ "employeeID": 4,
+ "orderDate": "1996-07-08 00:00:00.000",
+ "requiredDate": "1996-08-05 00:00:00.000",
+ "shippedDate": "1996-07-12 00:00:00.000",
+ "shipVia": 2,
+ "freight": 65.83,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10252,
+ "customerID": "SUPRD",
+ "employeeID": 4,
+ "orderDate": "1996-07-09 00:00:00.000",
+ "requiredDate": "1996-08-06 00:00:00.000",
+ "shippedDate": "1996-07-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 51.3,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 40,
+ "discount": 0.05
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 25,
+ "discount": 0.05
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10253,
+ "customerID": "HANAR",
+ "employeeID": 3,
+ "orderDate": "1996-07-10 00:00:00.000",
+ "requiredDate": "1996-07-24 00:00:00.000",
+ "shippedDate": "1996-07-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.17,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10251,
+ "customerID": "VICTE",
+ "employeeID": 3,
+ "orderDate": "1996-07-08 00:00:00.000",
+ "requiredDate": "1996-08-05 00:00:00.000",
+ "shippedDate": "1996-07-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 41.34,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 16.8,
+ "quantity": 6,
+ "discount": 0.05
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10257,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1996-07-16 00:00:00.000",
+ "requiredDate": "1996-08-13 00:00:00.000",
+ "shippedDate": "1996-07-22 00:00:00.000",
+ "shipVia": 3,
+ "freight": 81.91,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 27,
+ "unitPrice": 35.1,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10258,
+ "customerID": "ERNSH",
+ "employeeID": 1,
+ "orderDate": "1996-07-17 00:00:00.000",
+ "requiredDate": "1996-08-14 00:00:00.000",
+ "shippedDate": "1996-07-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 140.51,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 50,
+ "discount": 0.2
+ },
+ {
+ "productID": 5,
+ "unitPrice": 17,
+ "quantity": 65,
+ "discount": 0.2
+ },
+ {
+ "productID": 32,
+ "unitPrice": 25.6,
+ "quantity": 6,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10259,
+ "customerID": "CENTC",
+ "employeeID": 4,
+ "orderDate": "1996-07-18 00:00:00.000",
+ "requiredDate": "1996-08-15 00:00:00.000",
+ "shippedDate": "1996-07-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.25,
+ "shipName": "Centro comercial Moctezuma",
+ "shipAddress": {
+ "street": "Sierras de Granada 9993",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5022,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 37,
+ "unitPrice": 20.8,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10260,
+ "customerID": "OTTIK",
+ "employeeID": 4,
+ "orderDate": "1996-07-19 00:00:00.000",
+ "requiredDate": "1996-08-16 00:00:00.000",
+ "shippedDate": "1996-07-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.09,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 16,
+ "discount": 0.25
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 21,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10261,
+ "customerID": "QUEDE",
+ "employeeID": 4,
+ "orderDate": "1996-07-19 00:00:00.000",
+ "requiredDate": "1996-08-16 00:00:00.000",
+ "shippedDate": "1996-07-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.05,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10262,
+ "customerID": "RATTC",
+ "employeeID": 8,
+ "orderDate": "1996-07-22 00:00:00.000",
+ "requiredDate": "1996-08-19 00:00:00.000",
+ "shippedDate": "1996-07-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 48.29,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 5,
+ "unitPrice": 17,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 7,
+ "unitPrice": 24,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10256,
+ "customerID": "WELLI",
+ "employeeID": 3,
+ "orderDate": "1996-07-15 00:00:00.000",
+ "requiredDate": "1996-08-12 00:00:00.000",
+ "shippedDate": "1996-07-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.97,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10255,
+ "customerID": "RICSU",
+ "employeeID": 9,
+ "orderDate": "1996-07-12 00:00:00.000",
+ "requiredDate": "1996-08-09 00:00:00.000",
+ "shippedDate": "1996-07-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 148.33,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10264,
+ "customerID": "FOLKO",
+ "employeeID": 6,
+ "orderDate": "1996-07-24 00:00:00.000",
+ "requiredDate": "1996-08-21 00:00:00.000",
+ "shippedDate": "1996-08-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.67,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 25,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10265,
+ "customerID": "BLONP",
+ "employeeID": 2,
+ "orderDate": "1996-07-25 00:00:00.000",
+ "requiredDate": "1996-08-22 00:00:00.000",
+ "shippedDate": "1996-08-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.28,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10254,
+ "customerID": "CHOPS",
+ "employeeID": 5,
+ "orderDate": "1996-07-11 00:00:00.000",
+ "requiredDate": "1996-08-08 00:00:00.000",
+ "shippedDate": "1996-07-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 22.98,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 21,
+ "discount": 0.15
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10263,
+ "customerID": "ERNSH",
+ "employeeID": 9,
+ "orderDate": "1996-07-23 00:00:00.000",
+ "requiredDate": "1996-08-20 00:00:00.000",
+ "shippedDate": "1996-07-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 146.06,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 60,
+ "discount": 0.25
+ },
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 60,
+ "discount": 0.25
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 36,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10268,
+ "customerID": "GROSR",
+ "employeeID": 8,
+ "orderDate": "1996-07-30 00:00:00.000",
+ "requiredDate": "1996-08-27 00:00:00.000",
+ "shippedDate": "1996-08-02 00:00:00.000",
+ "shipVia": 3,
+ "freight": 66.29,
+ "shipName": "GROSELLA-Restaurante",
+ "shipAddress": {
+ "street": "5ª Ave. Los Palos Grandes",
+ "city": "Caracas",
+ "region": "DF",
+ "postalCode": 1081,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10267,
+ "customerID": "FRANK",
+ "employeeID": 4,
+ "orderDate": "1996-07-29 00:00:00.000",
+ "requiredDate": "1996-08-26 00:00:00.000",
+ "shippedDate": "1996-08-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 208.58,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 70,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10270,
+ "customerID": "WARTH",
+ "employeeID": 1,
+ "orderDate": "1996-08-01 00:00:00.000",
+ "requiredDate": "1996-08-29 00:00:00.000",
+ "shippedDate": "1996-08-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 136.54,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10274,
+ "customerID": "VINET",
+ "employeeID": 6,
+ "orderDate": "1996-08-06 00:00:00.000",
+ "requiredDate": "1996-09-03 00:00:00.000",
+ "shippedDate": "1996-08-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 6.01,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10275,
+ "customerID": "MAGAA",
+ "employeeID": 1,
+ "orderDate": "1996-08-07 00:00:00.000",
+ "requiredDate": "1996-09-04 00:00:00.000",
+ "shippedDate": "1996-08-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 26.93,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 6,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10276,
+ "customerID": "TORTU",
+ "employeeID": 8,
+ "orderDate": "1996-08-08 00:00:00.000",
+ "requiredDate": "1996-08-22 00:00:00.000",
+ "shippedDate": "1996-08-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.84,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10277,
+ "customerID": "MORGK",
+ "employeeID": 2,
+ "orderDate": "1996-08-09 00:00:00.000",
+ "requiredDate": "1996-09-06 00:00:00.000",
+ "shippedDate": "1996-08-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 125.77,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10273,
+ "customerID": "QUICK",
+ "employeeID": 3,
+ "orderDate": "1996-08-05 00:00:00.000",
+ "requiredDate": "1996-09-02 00:00:00.000",
+ "shippedDate": "1996-08-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 76.07,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 33,
+ "discount": 0.05
+ },
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 24,
+ "discount": 0.05
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10272,
+ "customerID": "RATTC",
+ "employeeID": 6,
+ "orderDate": "1996-08-02 00:00:00.000",
+ "requiredDate": "1996-08-30 00:00:00.000",
+ "shippedDate": "1996-08-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 98.03,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10278,
+ "customerID": "BERGS",
+ "employeeID": 8,
+ "orderDate": "1996-08-12 00:00:00.000",
+ "requiredDate": "1996-09-09 00:00:00.000",
+ "shippedDate": "1996-08-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 92.69,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 73,
+ "unitPrice": 12,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10269,
+ "customerID": "WHITC",
+ "employeeID": 5,
+ "orderDate": "1996-07-31 00:00:00.000",
+ "requiredDate": "1996-08-14 00:00:00.000",
+ "shippedDate": "1996-08-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.56,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10280,
+ "customerID": "BERGS",
+ "employeeID": 2,
+ "orderDate": "1996-08-14 00:00:00.000",
+ "requiredDate": "1996-09-11 00:00:00.000",
+ "shippedDate": "1996-09-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.98,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10281,
+ "customerID": "ROMEY",
+ "employeeID": 4,
+ "orderDate": "1996-08-14 00:00:00.000",
+ "requiredDate": "1996-08-28 00:00:00.000",
+ "shippedDate": "1996-08-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.94,
+ "shipName": "Romero y tomillo",
+ "shipAddress": {
+ "street": "Gran Vía 1",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28001,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 1,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10282,
+ "customerID": "ROMEY",
+ "employeeID": 4,
+ "orderDate": "1996-08-15 00:00:00.000",
+ "requiredDate": "1996-09-12 00:00:00.000",
+ "shippedDate": "1996-08-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.69,
+ "shipName": "Romero y tomillo",
+ "shipAddress": {
+ "street": "Gran Vía 1",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28001,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10283,
+ "customerID": "LILAS",
+ "employeeID": 3,
+ "orderDate": "1996-08-16 00:00:00.000",
+ "requiredDate": "1996-09-13 00:00:00.000",
+ "shippedDate": "1996-08-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 84.81,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 12.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10284,
+ "customerID": "LEHMS",
+ "employeeID": 4,
+ "orderDate": "1996-08-19 00:00:00.000",
+ "requiredDate": "1996-09-16 00:00:00.000",
+ "shippedDate": "1996-08-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 76.56,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 27,
+ "unitPrice": 35.1,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 67,
+ "unitPrice": 11.2,
+ "quantity": 5,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10285,
+ "customerID": "QUICK",
+ "employeeID": 1,
+ "orderDate": "1996-08-20 00:00:00.000",
+ "requiredDate": "1996-09-17 00:00:00.000",
+ "shippedDate": "1996-08-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 76.83,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 45,
+ "discount": 0.2
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 36,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10286,
+ "customerID": "QUICK",
+ "employeeID": 8,
+ "orderDate": "1996-08-21 00:00:00.000",
+ "requiredDate": "1996-09-18 00:00:00.000",
+ "shippedDate": "1996-08-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 229.24,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 100,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10287,
+ "customerID": "RICAR",
+ "employeeID": 8,
+ "orderDate": "1996-08-22 00:00:00.000",
+ "requiredDate": "1996-09-19 00:00:00.000",
+ "shippedDate": "1996-08-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 12.76,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10288,
+ "customerID": "REGGC",
+ "employeeID": 4,
+ "orderDate": "1996-08-23 00:00:00.000",
+ "requiredDate": "1996-09-20 00:00:00.000",
+ "shippedDate": "1996-09-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 7.45,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 3,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10289,
+ "customerID": "BSBEV",
+ "employeeID": 7,
+ "orderDate": "1996-08-26 00:00:00.000",
+ "requiredDate": "1996-09-23 00:00:00.000",
+ "shippedDate": "1996-08-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 22.77,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10290,
+ "customerID": "COMMI",
+ "employeeID": 8,
+ "orderDate": "1996-08-27 00:00:00.000",
+ "requiredDate": "1996-09-24 00:00:00.000",
+ "shippedDate": "1996-09-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 79.7,
+ "shipName": "Comércio Mineiro",
+ "shipAddress": {
+ "street": "Av. dos Lusíadas 23",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05432-043",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 5,
+ "unitPrice": 17,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10291,
+ "customerID": "QUEDE",
+ "employeeID": 6,
+ "orderDate": "1996-08-27 00:00:00.000",
+ "requiredDate": "1996-09-24 00:00:00.000",
+ "shippedDate": "1996-09-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 6.4,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 24,
+ "discount": 0.1
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 2,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10296,
+ "customerID": "LILAS",
+ "employeeID": 6,
+ "orderDate": "1996-09-03 00:00:00.000",
+ "requiredDate": "1996-10-01 00:00:00.000",
+ "shippedDate": "1996-09-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.12,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10297,
+ "customerID": "BLONP",
+ "employeeID": 5,
+ "orderDate": "1996-09-04 00:00:00.000",
+ "requiredDate": "1996-10-16 00:00:00.000",
+ "shippedDate": "1996-09-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 5.74,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10298,
+ "customerID": "HUNGO",
+ "employeeID": 6,
+ "orderDate": "1996-09-05 00:00:00.000",
+ "requiredDate": "1996-10-03 00:00:00.000",
+ "shippedDate": "1996-09-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 168.22,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10299,
+ "customerID": "RICAR",
+ "employeeID": 4,
+ "orderDate": "1996-09-06 00:00:00.000",
+ "requiredDate": "1996-10-04 00:00:00.000",
+ "shippedDate": "1996-09-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 29.76,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10300,
+ "customerID": "MAGAA",
+ "employeeID": 2,
+ "orderDate": "1996-09-09 00:00:00.000",
+ "requiredDate": "1996-10-07 00:00:00.000",
+ "shippedDate": "1996-09-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 17.68,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 66,
+ "unitPrice": 13.6,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10301,
+ "customerID": "WANDK",
+ "employeeID": 8,
+ "orderDate": "1996-09-09 00:00:00.000",
+ "requiredDate": "1996-10-07 00:00:00.000",
+ "shippedDate": "1996-09-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 45.08,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10293,
+ "customerID": "TORTU",
+ "employeeID": 1,
+ "orderDate": "1996-08-29 00:00:00.000",
+ "requiredDate": "1996-09-26 00:00:00.000",
+ "shippedDate": "1996-09-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 21.18,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10294,
+ "customerID": "RATTC",
+ "employeeID": 4,
+ "orderDate": "1996-08-30 00:00:00.000",
+ "requiredDate": "1996-09-27 00:00:00.000",
+ "shippedDate": "1996-09-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 147.26,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10302,
+ "customerID": "SUPRD",
+ "employeeID": 4,
+ "orderDate": "1996-09-10 00:00:00.000",
+ "requiredDate": "1996-10-08 00:00:00.000",
+ "shippedDate": "1996-10-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 6.27,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10303,
+ "customerID": "GODOS",
+ "employeeID": 7,
+ "orderDate": "1996-09-11 00:00:00.000",
+ "requiredDate": "1996-10-09 00:00:00.000",
+ "shippedDate": "1996-09-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 107.83,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10304,
+ "customerID": "TORTU",
+ "employeeID": 1,
+ "orderDate": "1996-09-12 00:00:00.000",
+ "requiredDate": "1996-10-10 00:00:00.000",
+ "shippedDate": "1996-09-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 63.79,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10306,
+ "customerID": "ROMEY",
+ "employeeID": 1,
+ "orderDate": "1996-09-16 00:00:00.000",
+ "requiredDate": "1996-10-14 00:00:00.000",
+ "shippedDate": "1996-09-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7.56,
+ "shipName": "Romero y tomillo",
+ "shipAddress": {
+ "street": "Gran Vía 1",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28001,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10305,
+ "customerID": "OLDWO",
+ "employeeID": 8,
+ "orderDate": "1996-09-13 00:00:00.000",
+ "requiredDate": "1996-10-11 00:00:00.000",
+ "shippedDate": "1996-10-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 257.62,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 25,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10307,
+ "customerID": "LONEP",
+ "employeeID": 2,
+ "orderDate": "1996-09-17 00:00:00.000",
+ "requiredDate": "1996-10-15 00:00:00.000",
+ "shippedDate": "1996-09-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.56,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10308,
+ "customerID": "ANATR",
+ "employeeID": 7,
+ "orderDate": "1996-09-18 00:00:00.000",
+ "requiredDate": "1996-10-16 00:00:00.000",
+ "shippedDate": "1996-09-24 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.61,
+ "shipName": "Ana Trujillo Emparedados y helados",
+ "shipAddress": {
+ "street": "Avda. de la Constitución 2222",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5021,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 1,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10309,
+ "customerID": "HUNGO",
+ "employeeID": 3,
+ "orderDate": "1996-09-19 00:00:00.000",
+ "requiredDate": "1996-10-17 00:00:00.000",
+ "shippedDate": "1996-10-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 47.3,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 6,
+ "unitPrice": 20,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10310,
+ "customerID": "THEBI",
+ "employeeID": 8,
+ "orderDate": "1996-09-20 00:00:00.000",
+ "requiredDate": "1996-10-18 00:00:00.000",
+ "shippedDate": "1996-09-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 17.52,
+ "shipName": "The Big Cheese",
+ "shipAddress": {
+ "street": "89 Jefferson Way Suite 2",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97201,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10314,
+ "customerID": "RATTC",
+ "employeeID": 1,
+ "orderDate": "1996-09-25 00:00:00.000",
+ "requiredDate": "1996-10-23 00:00:00.000",
+ "shippedDate": "1996-10-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 74.16,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 25.6,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 58,
+ "unitPrice": 10.6,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 25,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10315,
+ "customerID": "ISLAT",
+ "employeeID": 4,
+ "orderDate": "1996-09-26 00:00:00.000",
+ "requiredDate": "1996-10-24 00:00:00.000",
+ "shippedDate": "1996-10-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 41.76,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10316,
+ "customerID": "RATTC",
+ "employeeID": 1,
+ "orderDate": "1996-09-27 00:00:00.000",
+ "requiredDate": "1996-10-25 00:00:00.000",
+ "shippedDate": "1996-10-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 150.15,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10311,
+ "customerID": "DUMON",
+ "employeeID": 1,
+ "orderDate": "1996-09-20 00:00:00.000",
+ "requiredDate": "1996-10-04 00:00:00.000",
+ "shippedDate": "1996-09-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 24.69,
+ "shipName": "Du monde entier",
+ "shipAddress": {
+ "street": "67 rue des Cinquante Otages",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10312,
+ "customerID": "WANDK",
+ "employeeID": 2,
+ "orderDate": "1996-09-23 00:00:00.000",
+ "requiredDate": "1996-10-21 00:00:00.000",
+ "shippedDate": "1996-10-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 40.26,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10319,
+ "customerID": "TORTU",
+ "employeeID": 7,
+ "orderDate": "1996-10-02 00:00:00.000",
+ "requiredDate": "1996-10-30 00:00:00.000",
+ "shippedDate": "1996-10-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 64.5,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10318,
+ "customerID": "ISLAT",
+ "employeeID": 8,
+ "orderDate": "1996-10-01 00:00:00.000",
+ "requiredDate": "1996-10-29 00:00:00.000",
+ "shippedDate": "1996-10-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.73,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10326,
+ "customerID": "BOLID",
+ "employeeID": 4,
+ "orderDate": "1996-10-10 00:00:00.000",
+ "requiredDate": "1996-11-07 00:00:00.000",
+ "shippedDate": "1996-10-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 77.92,
+ "shipName": "Bólido Comidas preparadas",
+ "shipAddress": {
+ "street": "C/ Araquil 67",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28023,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10323,
+ "customerID": "KOENE",
+ "employeeID": 4,
+ "orderDate": "1996-10-07 00:00:00.000",
+ "requiredDate": "1996-11-04 00:00:00.000",
+ "shippedDate": "1996-10-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.88,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 12.4,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10327,
+ "customerID": "FOLKO",
+ "employeeID": 2,
+ "orderDate": "1996-10-11 00:00:00.000",
+ "requiredDate": "1996-11-08 00:00:00.000",
+ "shippedDate": "1996-10-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 63.36,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 50,
+ "discount": 0.2
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 58,
+ "unitPrice": 10.6,
+ "quantity": 30,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10328,
+ "customerID": "FURIB",
+ "employeeID": 4,
+ "orderDate": "1996-10-14 00:00:00.000",
+ "requiredDate": "1996-11-11 00:00:00.000",
+ "shippedDate": "1996-10-17 00:00:00.000",
+ "shipVia": 3,
+ "freight": 87.03,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10330,
+ "customerID": "LILAS",
+ "employeeID": 3,
+ "orderDate": "1996-10-16 00:00:00.000",
+ "requiredDate": "1996-11-13 00:00:00.000",
+ "shippedDate": "1996-10-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.75,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 25,
+ "discount": 0.15
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 50,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10329,
+ "customerID": "SPLIR",
+ "employeeID": 4,
+ "orderDate": "1996-10-15 00:00:00.000",
+ "requiredDate": "1996-11-26 00:00:00.000",
+ "shippedDate": "1996-10-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 191.67,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 8,
+ "discount": 0.05
+ },
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 12,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10324,
+ "customerID": "SAVEA",
+ "employeeID": 9,
+ "orderDate": "1996-10-08 00:00:00.000",
+ "requiredDate": "1996-11-05 00:00:00.000",
+ "shippedDate": "1996-10-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 214.27,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 70,
+ "discount": 0.15
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 21,
+ "discount": 0.15
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 80,
+ "discount": 0.15
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 40,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10333,
+ "customerID": "WARTH",
+ "employeeID": 5,
+ "orderDate": "1996-10-18 00:00:00.000",
+ "requiredDate": "1996-11-15 00:00:00.000",
+ "shippedDate": "1996-10-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.59,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 40,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10334,
+ "customerID": "VICTE",
+ "employeeID": 8,
+ "orderDate": "1996-10-21 00:00:00.000",
+ "requiredDate": "1996-11-18 00:00:00.000",
+ "shippedDate": "1996-10-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.56,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10335,
+ "customerID": "HUNGO",
+ "employeeID": 7,
+ "orderDate": "1996-10-22 00:00:00.000",
+ "requiredDate": "1996-11-19 00:00:00.000",
+ "shippedDate": "1996-10-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 42.11,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 32,
+ "unitPrice": 25.6,
+ "quantity": 6,
+ "discount": 0.2
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 48,
+ "discount": 0.2
+ },
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 7,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10337,
+ "customerID": "FRANK",
+ "employeeID": 4,
+ "orderDate": "1996-10-24 00:00:00.000",
+ "requiredDate": "1996-11-21 00:00:00.000",
+ "shippedDate": "1996-10-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 108.26,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 37,
+ "unitPrice": 20.8,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10338,
+ "customerID": "OLDWO",
+ "employeeID": 4,
+ "orderDate": "1996-10-25 00:00:00.000",
+ "requiredDate": "1996-11-22 00:00:00.000",
+ "shippedDate": "1996-10-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 84.21,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10339,
+ "customerID": "MEREP",
+ "employeeID": 2,
+ "orderDate": "1996-10-28 00:00:00.000",
+ "requiredDate": "1996-11-25 00:00:00.000",
+ "shippedDate": "1996-11-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 15.66,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 70,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10340,
+ "customerID": "BONAP",
+ "employeeID": 1,
+ "orderDate": "1996-10-29 00:00:00.000",
+ "requiredDate": "1996-11-26 00:00:00.000",
+ "shippedDate": "1996-11-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 166.31,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10341,
+ "customerID": "SIMOB",
+ "employeeID": 7,
+ "orderDate": "1996-10-29 00:00:00.000",
+ "requiredDate": "1996-11-26 00:00:00.000",
+ "shippedDate": "1996-11-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 26.78,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 9,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10342,
+ "customerID": "FRANK",
+ "employeeID": 4,
+ "orderDate": "1996-10-30 00:00:00.000",
+ "requiredDate": "1996-11-13 00:00:00.000",
+ "shippedDate": "1996-11-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 54.83,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 24,
+ "discount": 0.2
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 56,
+ "discount": 0.2
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10343,
+ "customerID": "LEHMS",
+ "employeeID": 4,
+ "orderDate": "1996-10-31 00:00:00.000",
+ "requiredDate": "1996-11-28 00:00:00.000",
+ "shippedDate": "1996-11-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 110.37,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 4,
+ "discount": 0.05
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10344,
+ "customerID": "WHITC",
+ "employeeID": 4,
+ "orderDate": "1996-11-01 00:00:00.000",
+ "requiredDate": "1996-11-29 00:00:00.000",
+ "shippedDate": "1996-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 23.29,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 8,
+ "unitPrice": 32,
+ "quantity": 70,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10345,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1996-11-04 00:00:00.000",
+ "requiredDate": "1996-12-02 00:00:00.000",
+ "shippedDate": "1996-11-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 249.06,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 32,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 80,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10346,
+ "customerID": "RATTC",
+ "employeeID": 3,
+ "orderDate": "1996-11-05 00:00:00.000",
+ "requiredDate": "1996-12-17 00:00:00.000",
+ "shippedDate": "1996-11-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 142.08,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 36,
+ "discount": 0.1
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10347,
+ "customerID": "FAMIA",
+ "employeeID": 4,
+ "orderDate": "1996-11-06 00:00:00.000",
+ "requiredDate": "1996-12-04 00:00:00.000",
+ "shippedDate": "1996-11-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.1,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 50,
+ "discount": 0.15
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 6,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10348,
+ "customerID": "WANDK",
+ "employeeID": 4,
+ "orderDate": "1996-11-07 00:00:00.000",
+ "requiredDate": "1996-12-05 00:00:00.000",
+ "shippedDate": "1996-11-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.78,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10325,
+ "customerID": "KOENE",
+ "employeeID": 1,
+ "orderDate": "1996-10-09 00:00:00.000",
+ "requiredDate": "1996-10-23 00:00:00.000",
+ "shippedDate": "1996-10-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 64.86,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 6,
+ "unitPrice": 20,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10350,
+ "customerID": "LAMAI",
+ "employeeID": 6,
+ "orderDate": "1996-11-11 00:00:00.000",
+ "requiredDate": "1996-12-09 00:00:00.000",
+ "shippedDate": "1996-12-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 64.19,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 50,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 18,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10332,
+ "customerID": "MEREP",
+ "employeeID": 3,
+ "orderDate": "1996-10-17 00:00:00.000",
+ "requiredDate": "1996-11-28 00:00:00.000",
+ "shippedDate": "1996-10-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 52.84,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 47,
+ "unitPrice": 7.6,
+ "quantity": 16,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10351,
+ "customerID": "ERNSH",
+ "employeeID": 1,
+ "orderDate": "1996-11-11 00:00:00.000",
+ "requiredDate": "1996-12-09 00:00:00.000",
+ "shippedDate": "1996-11-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 162.33,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 13,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 77,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10355,
+ "customerID": "AROUT",
+ "employeeID": 6,
+ "orderDate": "1996-11-15 00:00:00.000",
+ "requiredDate": "1996-12-13 00:00:00.000",
+ "shippedDate": "1996-11-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 41.95,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10356,
+ "customerID": "WANDK",
+ "employeeID": 6,
+ "orderDate": "1996-11-18 00:00:00.000",
+ "requiredDate": "1996-12-16 00:00:00.000",
+ "shippedDate": "1996-11-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 36.71,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10357,
+ "customerID": "LILAS",
+ "employeeID": 1,
+ "orderDate": "1996-11-19 00:00:00.000",
+ "requiredDate": "1996-12-17 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 3,
+ "freight": 34.88,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 8,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10358,
+ "customerID": "LAMAI",
+ "employeeID": 5,
+ "orderDate": "1996-11-20 00:00:00.000",
+ "requiredDate": "1996-12-18 00:00:00.000",
+ "shippedDate": "1996-11-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 19.64,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10359,
+ "customerID": "SEVES",
+ "employeeID": 5,
+ "orderDate": "1996-11-21 00:00:00.000",
+ "requiredDate": "1996-12-19 00:00:00.000",
+ "shippedDate": "1996-11-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 288.43,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 56,
+ "discount": 0.05
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 70,
+ "discount": 0.05
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 80,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10360,
+ "customerID": "BLONP",
+ "employeeID": 4,
+ "orderDate": "1996-11-22 00:00:00.000",
+ "requiredDate": "1996-12-20 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 3,
+ "freight": 131.7,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10361,
+ "customerID": "QUICK",
+ "employeeID": 1,
+ "orderDate": "1996-11-22 00:00:00.000",
+ "requiredDate": "1996-12-20 00:00:00.000",
+ "shippedDate": "1996-12-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 183.17,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 54,
+ "discount": 0.1
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 55,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10353,
+ "customerID": "PICCO",
+ "employeeID": 7,
+ "orderDate": "1996-11-13 00:00:00.000",
+ "requiredDate": "1996-12-11 00:00:00.000",
+ "shippedDate": "1996-11-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 360.63,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10363,
+ "customerID": "DRACD",
+ "employeeID": 4,
+ "orderDate": "1996-11-26 00:00:00.000",
+ "requiredDate": "1996-12-24 00:00:00.000",
+ "shippedDate": "1996-12-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 30.54,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10352,
+ "customerID": "FURIB",
+ "employeeID": 3,
+ "orderDate": "1996-11-12 00:00:00.000",
+ "requiredDate": "1996-11-26 00:00:00.000",
+ "shippedDate": "1996-11-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.3,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10364,
+ "customerID": "EASTC",
+ "employeeID": 1,
+ "orderDate": "1996-11-26 00:00:00.000",
+ "requiredDate": "1997-01-07 00:00:00.000",
+ "shippedDate": "1996-12-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 71.97,
+ "shipName": "Eastern Connection",
+ "shipAddress": {
+ "street": "35 King George",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX3 6FW",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10354,
+ "customerID": "PERIC",
+ "employeeID": 8,
+ "orderDate": "1996-11-14 00:00:00.000",
+ "requiredDate": "1996-12-12 00:00:00.000",
+ "shippedDate": "1996-11-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 53.8,
+ "shipName": "Pericles Comidas clásicas",
+ "shipAddress": {
+ "street": "Calle Dr. Jorge Cash 321",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10362,
+ "customerID": "BONAP",
+ "employeeID": 3,
+ "orderDate": "1996-11-25 00:00:00.000",
+ "requiredDate": "1996-12-23 00:00:00.000",
+ "shippedDate": "1996-11-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 96.04,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10366,
+ "customerID": "GALED",
+ "employeeID": 8,
+ "orderDate": "1996-11-28 00:00:00.000",
+ "requiredDate": "1997-01-09 00:00:00.000",
+ "shippedDate": "1996-12-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 10.14,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10367,
+ "customerID": "VAFFE",
+ "employeeID": 7,
+ "orderDate": "1996-11-28 00:00:00.000",
+ "requiredDate": "1996-12-26 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.55,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10372,
+ "customerID": "QUEEN",
+ "employeeID": 5,
+ "orderDate": "1996-12-04 00:00:00.000",
+ "requiredDate": "1997-01-01 00:00:00.000",
+ "shippedDate": "1996-12-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 890.78,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 70,
+ "discount": 0.25
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 42,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10373,
+ "customerID": "HUNGO",
+ "employeeID": 4,
+ "orderDate": "1996-12-05 00:00:00.000",
+ "requiredDate": "1997-01-02 00:00:00.000",
+ "shippedDate": "1996-12-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 124.12,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 58,
+ "unitPrice": 10.6,
+ "quantity": 80,
+ "discount": 0.2
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10374,
+ "customerID": "WOLZA",
+ "employeeID": 1,
+ "orderDate": "1996-12-05 00:00:00.000",
+ "requiredDate": "1997-01-02 00:00:00.000",
+ "shippedDate": "1996-12-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.94,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 58,
+ "unitPrice": 10.6,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10375,
+ "customerID": "HUNGC",
+ "employeeID": 3,
+ "orderDate": "1996-12-06 00:00:00.000",
+ "requiredDate": "1997-01-03 00:00:00.000",
+ "shippedDate": "1996-12-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 20.12,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10368,
+ "customerID": "ERNSH",
+ "employeeID": 2,
+ "orderDate": "1996-11-29 00:00:00.000",
+ "requiredDate": "1996-12-27 00:00:00.000",
+ "shippedDate": "1996-12-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 101.95,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 5,
+ "discount": 0.1
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 13,
+ "discount": 0.1
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 35,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10369,
+ "customerID": "SPLIR",
+ "employeeID": 8,
+ "orderDate": "1996-12-02 00:00:00.000",
+ "requiredDate": "1996-12-30 00:00:00.000",
+ "shippedDate": "1996-12-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 195.68,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 18,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10379,
+ "customerID": "QUEDE",
+ "employeeID": 2,
+ "orderDate": "1996-12-11 00:00:00.000",
+ "requiredDate": "1997-01-08 00:00:00.000",
+ "shippedDate": "1996-12-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 45.03,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 16,
+ "discount": 0.1
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10370,
+ "customerID": "CHOPS",
+ "employeeID": 6,
+ "orderDate": "1996-12-03 00:00:00.000",
+ "requiredDate": "1996-12-31 00:00:00.000",
+ "shippedDate": "1996-12-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.17,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10380,
+ "customerID": "HUNGO",
+ "employeeID": 8,
+ "orderDate": "1996-12-12 00:00:00.000",
+ "requiredDate": "1997-01-09 00:00:00.000",
+ "shippedDate": "1997-01-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 35.03,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 6,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10377,
+ "customerID": "SEVES",
+ "employeeID": 1,
+ "orderDate": "1996-12-09 00:00:00.000",
+ "requiredDate": "1997-01-06 00:00:00.000",
+ "shippedDate": "1996-12-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 22.21,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10384,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1996-12-16 00:00:00.000",
+ "requiredDate": "1997-01-13 00:00:00.000",
+ "shippedDate": "1996-12-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 168.64,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 20,
+ "unitPrice": 64.8,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10385,
+ "customerID": "SPLIR",
+ "employeeID": 1,
+ "orderDate": "1996-12-17 00:00:00.000",
+ "requiredDate": "1997-01-14 00:00:00.000",
+ "shippedDate": "1996-12-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 30.96,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 24,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 8,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10386,
+ "customerID": "FAMIA",
+ "employeeID": 9,
+ "orderDate": "1996-12-18 00:00:00.000",
+ "requiredDate": "1997-01-01 00:00:00.000",
+ "shippedDate": "1996-12-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.99,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10387,
+ "customerID": "SANTG",
+ "employeeID": 1,
+ "orderDate": "1996-12-18 00:00:00.000",
+ "requiredDate": "1997-01-15 00:00:00.000",
+ "shippedDate": "1996-12-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 93.63,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10388,
+ "customerID": "SEVES",
+ "employeeID": 2,
+ "orderDate": "1996-12-19 00:00:00.000",
+ "requiredDate": "1997-01-16 00:00:00.000",
+ "shippedDate": "1996-12-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 34.86,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 7.6,
+ "quantity": 15,
+ "discount": 0.2
+ },
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10389,
+ "customerID": "BOTTM",
+ "employeeID": 4,
+ "orderDate": "1996-12-20 00:00:00.000",
+ "requiredDate": "1997-01-17 00:00:00.000",
+ "shippedDate": "1996-12-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 47.42,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10382,
+ "customerID": "ERNSH",
+ "employeeID": 4,
+ "orderDate": "1996-12-13 00:00:00.000",
+ "requiredDate": "1997-01-10 00:00:00.000",
+ "shippedDate": "1996-12-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 94.77,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 5,
+ "unitPrice": 17,
+ "quantity": 32,
+ "discount": 0
+ },
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10381,
+ "customerID": "LILAS",
+ "employeeID": 3,
+ "orderDate": "1996-12-12 00:00:00.000",
+ "requiredDate": "1997-01-09 00:00:00.000",
+ "shippedDate": "1996-12-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7.99,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10383,
+ "customerID": "AROUT",
+ "employeeID": 8,
+ "orderDate": "1996-12-16 00:00:00.000",
+ "requiredDate": "1997-01-13 00:00:00.000",
+ "shippedDate": "1996-12-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 34.24,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 50,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10390,
+ "customerID": "ERNSH",
+ "employeeID": 6,
+ "orderDate": "1996-12-23 00:00:00.000",
+ "requiredDate": "1997-01-20 00:00:00.000",
+ "shippedDate": "1996-12-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 126.38,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0.1
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 24,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10396,
+ "customerID": "FRANK",
+ "employeeID": 1,
+ "orderDate": "1996-12-27 00:00:00.000",
+ "requiredDate": "1997-01-10 00:00:00.000",
+ "shippedDate": "1997-01-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 135.35,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10397,
+ "customerID": "PRINI",
+ "employeeID": 5,
+ "orderDate": "1996-12-27 00:00:00.000",
+ "requiredDate": "1997-01-24 00:00:00.000",
+ "shippedDate": "1997-01-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 60.26,
+ "shipName": "Princesa Isabel Vinhos",
+ "shipAddress": {
+ "street": "Estrada da saúde n. 58",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1756,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 10,
+ "discount": 0.15
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 18,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10398,
+ "customerID": "SAVEA",
+ "employeeID": 2,
+ "orderDate": "1996-12-30 00:00:00.000",
+ "requiredDate": "1997-01-27 00:00:00.000",
+ "shippedDate": "1997-01-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 89.16,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 120,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10399,
+ "customerID": "VAFFE",
+ "employeeID": 8,
+ "orderDate": "1996-12-31 00:00:00.000",
+ "requiredDate": "1997-01-14 00:00:00.000",
+ "shippedDate": "1997-01-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 27.36,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10400,
+ "customerID": "EASTC",
+ "employeeID": 1,
+ "orderDate": "1997-01-01 00:00:00.000",
+ "requiredDate": "1997-01-29 00:00:00.000",
+ "shippedDate": "1997-01-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 83.93,
+ "shipName": "Eastern Connection",
+ "shipAddress": {
+ "street": "35 King George",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX3 6FW",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10401,
+ "customerID": "RATTC",
+ "employeeID": 1,
+ "orderDate": "1997-01-01 00:00:00.000",
+ "requiredDate": "1997-01-29 00:00:00.000",
+ "shippedDate": "1997-01-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.51,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10394,
+ "customerID": "HUNGC",
+ "employeeID": 1,
+ "orderDate": "1996-12-25 00:00:00.000",
+ "requiredDate": "1997-01-22 00:00:00.000",
+ "shippedDate": "1997-01-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 30.34,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10402,
+ "customerID": "ERNSH",
+ "employeeID": 8,
+ "orderDate": "1997-01-02 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-01-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 67.88,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 65,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10393,
+ "customerID": "SAVEA",
+ "employeeID": 1,
+ "orderDate": "1996-12-25 00:00:00.000",
+ "requiredDate": "1997-01-22 00:00:00.000",
+ "shippedDate": "1997-01-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 126.56,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 70,
+ "discount": 0.25
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 32,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 7,
+ "discount": 0.25
+ },
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 25,
+ "discount": 0.25
+ },
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 42,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10395,
+ "customerID": "HILAA",
+ "employeeID": 6,
+ "orderDate": "1996-12-26 00:00:00.000",
+ "requiredDate": "1997-01-23 00:00:00.000",
+ "shippedDate": "1997-01-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 184.41,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 28,
+ "discount": 0.1
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 70,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10406,
+ "customerID": "QUEEN",
+ "employeeID": 7,
+ "orderDate": "1997-01-07 00:00:00.000",
+ "requiredDate": "1997-02-18 00:00:00.000",
+ "shippedDate": "1997-01-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 108.04,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 42,
+ "discount": 0.1
+ },
+ {
+ "productID": 36,
+ "unitPrice": 15.2,
+ "quantity": 5,
+ "discount": 0.1
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 2,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10407,
+ "customerID": "OTTIK",
+ "employeeID": 2,
+ "orderDate": "1997-01-07 00:00:00.000",
+ "requiredDate": "1997-02-04 00:00:00.000",
+ "shippedDate": "1997-01-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 91.48,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10408,
+ "customerID": "FOLIG",
+ "employeeID": 8,
+ "orderDate": "1997-01-08 00:00:00.000",
+ "requiredDate": "1997-02-05 00:00:00.000",
+ "shippedDate": "1997-01-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.26,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 37,
+ "unitPrice": 20.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10409,
+ "customerID": "OCEAN",
+ "employeeID": 3,
+ "orderDate": "1997-01-09 00:00:00.000",
+ "requiredDate": "1997-02-06 00:00:00.000",
+ "shippedDate": "1997-01-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 29.83,
+ "shipName": "Océano Atlántico Ltda.",
+ "shipAddress": {
+ "street": "Ing. Gustavo Moncada 8585 Piso 20-A",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10410,
+ "customerID": "BOTTM",
+ "employeeID": 3,
+ "orderDate": "1997-01-10 00:00:00.000",
+ "requiredDate": "1997-02-07 00:00:00.000",
+ "shippedDate": "1997-01-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 2.4,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 49,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10411,
+ "customerID": "BOTTM",
+ "employeeID": 9,
+ "orderDate": "1997-01-10 00:00:00.000",
+ "requiredDate": "1997-02-07 00:00:00.000",
+ "shippedDate": "1997-01-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 23.65,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 9,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10404,
+ "customerID": "MAGAA",
+ "employeeID": 2,
+ "orderDate": "1997-01-03 00:00:00.000",
+ "requiredDate": "1997-01-31 00:00:00.000",
+ "shippedDate": "1997-01-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 155.97,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 40,
+ "discount": 0.05
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 30,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10413,
+ "customerID": "LAMAI",
+ "employeeID": 3,
+ "orderDate": "1997-01-14 00:00:00.000",
+ "requiredDate": "1997-02-11 00:00:00.000",
+ "shippedDate": "1997-01-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 95.66,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10403,
+ "customerID": "ERNSH",
+ "employeeID": 4,
+ "orderDate": "1997-01-03 00:00:00.000",
+ "requiredDate": "1997-01-31 00:00:00.000",
+ "shippedDate": "1997-01-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 73.79,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 21,
+ "discount": 0.15
+ },
+ {
+ "productID": 48,
+ "unitPrice": 10.2,
+ "quantity": 70,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10414,
+ "customerID": "FAMIA",
+ "employeeID": 2,
+ "orderDate": "1997-01-14 00:00:00.000",
+ "requiredDate": "1997-02-11 00:00:00.000",
+ "shippedDate": "1997-01-17 00:00:00.000",
+ "shipVia": 3,
+ "freight": 21.48,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 18,
+ "discount": 0.05
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10415,
+ "customerID": "HUNGC",
+ "employeeID": 3,
+ "orderDate": "1997-01-15 00:00:00.000",
+ "requiredDate": "1997-02-12 00:00:00.000",
+ "shippedDate": "1997-01-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.2,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10419,
+ "customerID": "RICSU",
+ "employeeID": 4,
+ "orderDate": "1997-01-20 00:00:00.000",
+ "requiredDate": "1997-02-17 00:00:00.000",
+ "shippedDate": "1997-01-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 137.35,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10420,
+ "customerID": "WELLI",
+ "employeeID": 3,
+ "orderDate": "1997-01-21 00:00:00.000",
+ "requiredDate": "1997-02-18 00:00:00.000",
+ "shippedDate": "1997-01-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 44.12,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 77.6,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 2,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 73,
+ "unitPrice": 12,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10421,
+ "customerID": "QUEDE",
+ "employeeID": 8,
+ "orderDate": "1997-01-21 00:00:00.000",
+ "requiredDate": "1997-03-04 00:00:00.000",
+ "shippedDate": "1997-01-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 99.23,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 4,
+ "discount": 0.15
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 10,
+ "discount": 0.15
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10423,
+ "customerID": "GOURL",
+ "employeeID": 6,
+ "orderDate": "1997-01-23 00:00:00.000",
+ "requiredDate": "1997-02-06 00:00:00.000",
+ "shippedDate": "1997-02-24 00:00:00.000",
+ "shipVia": 3,
+ "freight": 24.5,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10424,
+ "customerID": "MEREP",
+ "employeeID": 7,
+ "orderDate": "1997-01-23 00:00:00.000",
+ "requiredDate": "1997-02-20 00:00:00.000",
+ "shippedDate": "1997-01-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 370.61,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 49,
+ "discount": 0.2
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 60,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10418,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1997-01-17 00:00:00.000",
+ "requiredDate": "1997-02-14 00:00:00.000",
+ "shippedDate": "1997-01-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 17.55,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 7.6,
+ "quantity": 55,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 22.8,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10417,
+ "customerID": "SIMOB",
+ "employeeID": 4,
+ "orderDate": "1997-01-16 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-01-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 70.29,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 2,
+ "discount": 0.25
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 36,
+ "discount": 0.25
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10416,
+ "customerID": "WARTH",
+ "employeeID": 8,
+ "orderDate": "1997-01-16 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-01-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 22.72,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10425,
+ "customerID": "LAMAI",
+ "employeeID": 6,
+ "orderDate": "1997-01-24 00:00:00.000",
+ "requiredDate": "1997-02-21 00:00:00.000",
+ "shippedDate": "1997-02-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.93,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 10,
+ "discount": 0.25
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10429,
+ "customerID": "HUNGO",
+ "employeeID": 3,
+ "orderDate": "1997-01-29 00:00:00.000",
+ "requiredDate": "1997-03-12 00:00:00.000",
+ "shippedDate": "1997-02-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 56.63,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 50,
+ "unitPrice": 13,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 35.1,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10430,
+ "customerID": "ERNSH",
+ "employeeID": 4,
+ "orderDate": "1997-01-30 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-02-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 458.78,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 45,
+ "discount": 0.2
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 70,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10431,
+ "customerID": "BOTTM",
+ "employeeID": 4,
+ "orderDate": "1997-01-30 00:00:00.000",
+ "requiredDate": "1997-02-13 00:00:00.000",
+ "shippedDate": "1997-02-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 44.17,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 47,
+ "unitPrice": 7.6,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10432,
+ "customerID": "SPLIR",
+ "employeeID": 3,
+ "orderDate": "1997-01-31 00:00:00.000",
+ "requiredDate": "1997-02-14 00:00:00.000",
+ "shippedDate": "1997-02-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.34,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10434,
+ "customerID": "FOLKO",
+ "employeeID": 3,
+ "orderDate": "1997-02-03 00:00:00.000",
+ "requiredDate": "1997-03-03 00:00:00.000",
+ "shippedDate": "1997-02-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 17.92,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 18,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10436,
+ "customerID": "BLONP",
+ "employeeID": 3,
+ "orderDate": "1997-02-05 00:00:00.000",
+ "requiredDate": "1997-03-05 00:00:00.000",
+ "shippedDate": "1997-02-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 156.66,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 24,
+ "discount": 0.1
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 30,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10435,
+ "customerID": "CONSH",
+ "employeeID": 8,
+ "orderDate": "1997-02-04 00:00:00.000",
+ "requiredDate": "1997-03-18 00:00:00.000",
+ "shippedDate": "1997-02-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 9.21,
+ "shipName": "Consolidated Holdings",
+ "shipAddress": {
+ "street": "Berkeley Gardens 12 Brewery",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX1 6LT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 16.8,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10426,
+ "customerID": "GALED",
+ "employeeID": 4,
+ "orderDate": "1997-01-27 00:00:00.000",
+ "requiredDate": "1997-02-24 00:00:00.000",
+ "shippedDate": "1997-02-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 18.69,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10442,
+ "customerID": "ERNSH",
+ "employeeID": 3,
+ "orderDate": "1997-02-11 00:00:00.000",
+ "requiredDate": "1997-03-11 00:00:00.000",
+ "shippedDate": "1997-02-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 47.94,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 80,
+ "discount": 0
+ },
+ {
+ "productID": 66,
+ "unitPrice": 13.6,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10443,
+ "customerID": "REGGC",
+ "employeeID": 8,
+ "orderDate": "1997-02-12 00:00:00.000",
+ "requiredDate": "1997-03-12 00:00:00.000",
+ "shippedDate": "1997-02-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 13.95,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 6,
+ "discount": 0.2
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10444,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1997-02-12 00:00:00.000",
+ "requiredDate": "1997-03-12 00:00:00.000",
+ "shippedDate": "1997-02-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 3.5,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 31.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 14.4,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10445,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1997-02-13 00:00:00.000",
+ "requiredDate": "1997-03-13 00:00:00.000",
+ "shippedDate": "1997-02-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 9.3,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10446,
+ "customerID": "TOMSP",
+ "employeeID": 6,
+ "orderDate": "1997-02-14 00:00:00.000",
+ "requiredDate": "1997-03-14 00:00:00.000",
+ "shippedDate": "1997-02-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 14.68,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 3,
+ "discount": 0.1
+ },
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 12,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10440,
+ "customerID": "SAVEA",
+ "employeeID": 4,
+ "orderDate": "1997-02-10 00:00:00.000",
+ "requiredDate": "1997-03-10 00:00:00.000",
+ "shippedDate": "1997-02-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 86.53,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 45,
+ "discount": 0.15
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 49,
+ "discount": 0.15
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 24,
+ "discount": 0.15
+ },
+ {
+ "productID": 61,
+ "unitPrice": 22.8,
+ "quantity": 90,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10439,
+ "customerID": "MEREP",
+ "employeeID": 6,
+ "orderDate": "1997-02-07 00:00:00.000",
+ "requiredDate": "1997-03-07 00:00:00.000",
+ "shippedDate": "1997-02-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.07,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 30.4,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10448,
+ "customerID": "RANCH",
+ "employeeID": 4,
+ "orderDate": "1997-02-17 00:00:00.000",
+ "requiredDate": "1997-03-17 00:00:00.000",
+ "shippedDate": "1997-02-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 38.82,
+ "shipName": "Rancho grande",
+ "shipAddress": {
+ "street": "Av. del Libertador 900",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10438,
+ "customerID": "TOMSP",
+ "employeeID": 3,
+ "orderDate": "1997-02-06 00:00:00.000",
+ "requiredDate": "1997-03-06 00:00:00.000",
+ "shippedDate": "1997-02-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.24,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 15,
+ "discount": 0.2
+ },
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 57,
+ "unitPrice": 15.6,
+ "quantity": 15,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10447,
+ "customerID": "RICAR",
+ "employeeID": 4,
+ "orderDate": "1997-02-14 00:00:00.000",
+ "requiredDate": "1997-03-14 00:00:00.000",
+ "shippedDate": "1997-03-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 68.66,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10452,
+ "customerID": "SAVEA",
+ "employeeID": 8,
+ "orderDate": "1997-02-20 00:00:00.000",
+ "requiredDate": "1997-03-20 00:00:00.000",
+ "shippedDate": "1997-02-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 140.26,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 100,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10453,
+ "customerID": "AROUT",
+ "employeeID": 1,
+ "orderDate": "1997-02-21 00:00:00.000",
+ "requiredDate": "1997-03-21 00:00:00.000",
+ "shippedDate": "1997-02-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.36,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 48,
+ "unitPrice": 10.2,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 25,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10454,
+ "customerID": "LAMAI",
+ "employeeID": 4,
+ "orderDate": "1997-02-21 00:00:00.000",
+ "requiredDate": "1997-03-21 00:00:00.000",
+ "shippedDate": "1997-02-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 2.74,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10455,
+ "customerID": "WARTH",
+ "employeeID": 8,
+ "orderDate": "1997-02-24 00:00:00.000",
+ "requiredDate": "1997-04-07 00:00:00.000",
+ "shippedDate": "1997-03-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 180.45,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 22.8,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10456,
+ "customerID": "KOENE",
+ "employeeID": 8,
+ "orderDate": "1997-02-25 00:00:00.000",
+ "requiredDate": "1997-04-08 00:00:00.000",
+ "shippedDate": "1997-02-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.12,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 21,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10450,
+ "customerID": "VICTE",
+ "employeeID": 8,
+ "orderDate": "1997-02-19 00:00:00.000",
+ "requiredDate": "1997-03-19 00:00:00.000",
+ "shippedDate": "1997-03-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.23,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 6,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10451,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1997-02-19 00:00:00.000",
+ "requiredDate": "1997-03-05 00:00:00.000",
+ "shippedDate": "1997-03-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 189.09,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 120,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 35,
+ "discount": 0.1
+ },
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 28,
+ "discount": 0.1
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 55,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10449,
+ "customerID": "BLONP",
+ "employeeID": 3,
+ "orderDate": "1997-02-18 00:00:00.000",
+ "requiredDate": "1997-03-18 00:00:00.000",
+ "shippedDate": "1997-02-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 53.3,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 24.8,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 5.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 39.4,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10461,
+ "customerID": "LILAS",
+ "employeeID": 1,
+ "orderDate": "1997-02-28 00:00:00.000",
+ "requiredDate": "1997-03-28 00:00:00.000",
+ "shippedDate": "1997-03-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 148.61,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 28,
+ "discount": 0.25
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 60,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10462,
+ "customerID": "CONSH",
+ "employeeID": 2,
+ "orderDate": "1997-03-03 00:00:00.000",
+ "requiredDate": "1997-03-31 00:00:00.000",
+ "shippedDate": "1997-03-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 6.17,
+ "shipName": "Consolidated Holdings",
+ "shipAddress": {
+ "street": "Berkeley Gardens 12 Brewery",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX1 6LT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 4.8,
+ "quantity": 1,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10463,
+ "customerID": "SUPRD",
+ "employeeID": 5,
+ "orderDate": "1997-03-04 00:00:00.000",
+ "requiredDate": "1997-04-01 00:00:00.000",
+ "shippedDate": "1997-03-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 14.78,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10464,
+ "customerID": "FURIB",
+ "employeeID": 4,
+ "orderDate": "1997-03-04 00:00:00.000",
+ "requiredDate": "1997-04-01 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 89,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 17.6,
+ "quantity": 16,
+ "discount": 0.2
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10465,
+ "customerID": "VAFFE",
+ "employeeID": 1,
+ "orderDate": "1997-03-05 00:00:00.000",
+ "requiredDate": "1997-04-02 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 145.04,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 99,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 45,
+ "unitPrice": 7.6,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 50,
+ "unitPrice": 13,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10466,
+ "customerID": "COMMI",
+ "employeeID": 4,
+ "orderDate": "1997-03-06 00:00:00.000",
+ "requiredDate": "1997-04-03 00:00:00.000",
+ "shippedDate": "1997-03-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 11.93,
+ "shipName": "Comércio Mineiro",
+ "shipAddress": {
+ "street": "Av. dos Lusíadas 23",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05432-043",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10460,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1997-02-28 00:00:00.000",
+ "requiredDate": "1997-03-28 00:00:00.000",
+ "shippedDate": "1997-03-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.27,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 4,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10459,
+ "customerID": "VICTE",
+ "employeeID": 4,
+ "orderDate": "1997-02-27 00:00:00.000",
+ "requiredDate": "1997-03-27 00:00:00.000",
+ "shippedDate": "1997-02-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.09,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 24,
+ "quantity": 16,
+ "discount": 0.05
+ },
+ {
+ "productID": 46,
+ "unitPrice": 9.6,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10468,
+ "customerID": "KOENE",
+ "employeeID": 3,
+ "orderDate": "1997-03-07 00:00:00.000",
+ "requiredDate": "1997-04-04 00:00:00.000",
+ "shippedDate": "1997-03-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 44.12,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 20.7,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10469,
+ "customerID": "WHITC",
+ "employeeID": 1,
+ "orderDate": "1997-03-10 00:00:00.000",
+ "requiredDate": "1997-04-07 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 60.18,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 2,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10458,
+ "customerID": "SUPRD",
+ "employeeID": 7,
+ "orderDate": "1997-02-26 00:00:00.000",
+ "requiredDate": "1997-03-26 00:00:00.000",
+ "shippedDate": "1997-03-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 147.06,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 36.8,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10470,
+ "customerID": "BONAP",
+ "employeeID": 4,
+ "orderDate": "1997-03-11 00:00:00.000",
+ "requiredDate": "1997-04-08 00:00:00.000",
+ "shippedDate": "1997-03-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 64.56,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 50,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10467,
+ "customerID": "MAGAA",
+ "employeeID": 8,
+ "orderDate": "1997-03-06 00:00:00.000",
+ "requiredDate": "1997-04-03 00:00:00.000",
+ "shippedDate": "1997-03-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.93,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10474,
+ "customerID": "PERIC",
+ "employeeID": 5,
+ "orderDate": "1997-03-13 00:00:00.000",
+ "requiredDate": "1997-04-10 00:00:00.000",
+ "shippedDate": "1997-03-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 83.49,
+ "shipName": "Pericles Comidas clásicas",
+ "shipAddress": {
+ "street": "Calle Dr. Jorge Cash 321",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 36.4,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 14,
+ "unitPrice": 18.6,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10475,
+ "customerID": "SUPRD",
+ "employeeID": 9,
+ "orderDate": "1997-03-14 00:00:00.000",
+ "requiredDate": "1997-04-11 00:00:00.000",
+ "shippedDate": "1997-04-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 68.52,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 10,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 66,
+ "unitPrice": 13.6,
+ "quantity": 60,
+ "discount": 0.15
+ },
+ {
+ "productID": 76,
+ "unitPrice": 14.4,
+ "quantity": 42,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10476,
+ "customerID": "HILAA",
+ "employeeID": 8,
+ "orderDate": "1997-03-17 00:00:00.000",
+ "requiredDate": "1997-04-14 00:00:00.000",
+ "shippedDate": "1997-03-24 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.41,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 2,
+ "discount": 0.05
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10477,
+ "customerID": "PRINI",
+ "employeeID": 5,
+ "orderDate": "1997-03-17 00:00:00.000",
+ "requiredDate": "1997-04-14 00:00:00.000",
+ "shippedDate": "1997-03-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.02,
+ "shipName": "Princesa Isabel Vinhos",
+ "shipAddress": {
+ "street": "Estrada da saúde n. 58",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1756,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 14.4,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 39,
+ "unitPrice": 14.4,
+ "quantity": 20,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10479,
+ "customerID": "RATTC",
+ "employeeID": 3,
+ "orderDate": "1997-03-19 00:00:00.000",
+ "requiredDate": "1997-04-16 00:00:00.000",
+ "shippedDate": "1997-03-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 708.95,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 210.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 26.2,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 26.6,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10471,
+ "customerID": "BSBEV",
+ "employeeID": 2,
+ "orderDate": "1997-03-11 00:00:00.000",
+ "requiredDate": "1997-04-08 00:00:00.000",
+ "shippedDate": "1997-03-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 45.59,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 24,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10472,
+ "customerID": "SEVES",
+ "employeeID": 8,
+ "orderDate": "1997-03-12 00:00:00.000",
+ "requiredDate": "1997-04-09 00:00:00.000",
+ "shippedDate": "1997-03-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.2,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 3.6,
+ "quantity": 80,
+ "discount": 0.05
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10481,
+ "customerID": "RICAR",
+ "employeeID": 8,
+ "orderDate": "1997-03-20 00:00:00.000",
+ "requiredDate": "1997-04-17 00:00:00.000",
+ "shippedDate": "1997-03-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 64.33,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 49,
+ "unitPrice": 16,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 27.2,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10473,
+ "customerID": "ISLAT",
+ "employeeID": 1,
+ "orderDate": "1997-03-13 00:00:00.000",
+ "requiredDate": "1997-03-27 00:00:00.000",
+ "shippedDate": "1997-03-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 16.37,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 17.2,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10484,
+ "customerID": "BSBEV",
+ "employeeID": 3,
+ "orderDate": "1997-03-24 00:00:00.000",
+ "requiredDate": "1997-04-21 00:00:00.000",
+ "shippedDate": "1997-04-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 6.88,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 8,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 14.7,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10485,
+ "customerID": "LINOD",
+ "employeeID": 4,
+ "orderDate": "1997-03-25 00:00:00.000",
+ "requiredDate": "1997-04-08 00:00:00.000",
+ "shippedDate": "1997-03-31 00:00:00.000",
+ "shipVia": 2,
+ "freight": 64.45,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 15.2,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 3,
+ "unitPrice": 8,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 55,
+ "unitPrice": 19.2,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 12,
+ "quantity": 60,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10486,
+ "customerID": "HILAA",
+ "employeeID": 1,
+ "orderDate": "1997-03-26 00:00:00.000",
+ "requiredDate": "1997-04-23 00:00:00.000",
+ "shippedDate": "1997-04-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 30.53,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 42.4,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 8,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10487,
+ "customerID": "QUEEN",
+ "employeeID": 2,
+ "orderDate": "1997-03-26 00:00:00.000",
+ "requiredDate": "1997-04-23 00:00:00.000",
+ "shippedDate": "1997-03-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 71.07,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 7.3,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 24.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 5.9,
+ "quantity": 24,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10488,
+ "customerID": "FRANK",
+ "employeeID": 8,
+ "orderDate": "1997-03-27 00:00:00.000",
+ "requiredDate": "1997-04-24 00:00:00.000",
+ "shippedDate": "1997-04-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.93,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 12,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10489,
+ "customerID": "PICCO",
+ "employeeID": 6,
+ "orderDate": "1997-03-28 00:00:00.000",
+ "requiredDate": "1997-04-25 00:00:00.000",
+ "shippedDate": "1997-04-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 5.29,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 16.8,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 16,
+ "unitPrice": 13.9,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10483,
+ "customerID": "WHITC",
+ "employeeID": 7,
+ "orderDate": "1997-03-24 00:00:00.000",
+ "requiredDate": "1997-04-21 00:00:00.000",
+ "shippedDate": "1997-04-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 15.28,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 11.2,
+ "quantity": 35,
+ "discount": 0.05
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 30,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10491,
+ "customerID": "FURIB",
+ "employeeID": 8,
+ "orderDate": "1997-03-31 00:00:00.000",
+ "requiredDate": "1997-04-28 00:00:00.000",
+ "shippedDate": "1997-04-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 16.96,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 44,
+ "unitPrice": 15.5,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 7,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10480,
+ "customerID": "FOLIG",
+ "employeeID": 6,
+ "orderDate": "1997-03-20 00:00:00.000",
+ "requiredDate": "1997-04-17 00:00:00.000",
+ "shippedDate": "1997-03-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.35,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 7.6,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10490,
+ "customerID": "HILAA",
+ "employeeID": 7,
+ "orderDate": "1997-03-31 00:00:00.000",
+ "requiredDate": "1997-04-28 00:00:00.000",
+ "shippedDate": "1997-04-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 210.19,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 44,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 6.2,
+ "quantity": 36,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10492,
+ "customerID": "BOTTM",
+ "employeeID": 3,
+ "orderDate": "1997-04-01 00:00:00.000",
+ "requiredDate": "1997-04-29 00:00:00.000",
+ "shippedDate": "1997-04-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 62.89,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 11.2,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 42,
+ "unitPrice": 11.2,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10493,
+ "customerID": "LAMAI",
+ "employeeID": 4,
+ "orderDate": "1997-04-02 00:00:00.000",
+ "requiredDate": "1997-04-30 00:00:00.000",
+ "shippedDate": "1997-04-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 10.64,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 16.8,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 66,
+ "unitPrice": 13.6,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 69,
+ "unitPrice": 28.8,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10498,
+ "customerID": "HILAA",
+ "employeeID": 8,
+ "orderDate": "1997-04-07 00:00:00.000",
+ "requiredDate": "1997-05-05 00:00:00.000",
+ "shippedDate": "1997-04-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 29.75,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10499,
+ "customerID": "LILAS",
+ "employeeID": 4,
+ "orderDate": "1997-04-08 00:00:00.000",
+ "requiredDate": "1997-05-06 00:00:00.000",
+ "shippedDate": "1997-04-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 102.02,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10500,
+ "customerID": "LAMAI",
+ "employeeID": 6,
+ "orderDate": "1997-04-09 00:00:00.000",
+ "requiredDate": "1997-05-07 00:00:00.000",
+ "shippedDate": "1997-04-17 00:00:00.000",
+ "shipVia": 1,
+ "freight": 42.68,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 15.5,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 8,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10502,
+ "customerID": "PERIC",
+ "employeeID": 2,
+ "orderDate": "1997-04-10 00:00:00.000",
+ "requiredDate": "1997-05-08 00:00:00.000",
+ "shippedDate": "1997-04-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 69.32,
+ "shipName": "Pericles Comidas clásicas",
+ "shipAddress": {
+ "street": "Calle Dr. Jorge Cash 321",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10503,
+ "customerID": "HUNGO",
+ "employeeID": 6,
+ "orderDate": "1997-04-11 00:00:00.000",
+ "requiredDate": "1997-05-09 00:00:00.000",
+ "shippedDate": "1997-04-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 16.74,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10497,
+ "customerID": "LEHMS",
+ "employeeID": 7,
+ "orderDate": "1997-04-04 00:00:00.000",
+ "requiredDate": "1997-05-02 00:00:00.000",
+ "shippedDate": "1997-04-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 36.21,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 30.4,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 27.8,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10495,
+ "customerID": "LAUGB",
+ "employeeID": 3,
+ "orderDate": "1997-04-03 00:00:00.000",
+ "requiredDate": "1997-05-01 00:00:00.000",
+ "shippedDate": "1997-04-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.65,
+ "shipName": "Laughing Bacchus Wine Cellars",
+ "shipAddress": {
+ "street": "2319 Elm St.",
+ "city": "Vancouver",
+ "region": "BC",
+ "postalCode": "V3F 2K1",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 7.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 10.4,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 7.7,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10504,
+ "customerID": "WHITC",
+ "employeeID": 4,
+ "orderDate": "1997-04-11 00:00:00.000",
+ "requiredDate": "1997-05-09 00:00:00.000",
+ "shippedDate": "1997-04-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 59.13,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10508,
+ "customerID": "OTTIK",
+ "employeeID": 1,
+ "orderDate": "1997-04-16 00:00:00.000",
+ "requiredDate": "1997-05-14 00:00:00.000",
+ "shippedDate": "1997-05-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 4.99,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10510,
+ "customerID": "SAVEA",
+ "employeeID": 6,
+ "orderDate": "1997-04-18 00:00:00.000",
+ "requiredDate": "1997-05-16 00:00:00.000",
+ "shippedDate": "1997-04-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 367.63,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 36,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10511,
+ "customerID": "BONAP",
+ "employeeID": 4,
+ "orderDate": "1997-04-18 00:00:00.000",
+ "requiredDate": "1997-05-16 00:00:00.000",
+ "shippedDate": "1997-04-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 350.64,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 50,
+ "discount": 0.15
+ },
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 50,
+ "discount": 0.15
+ },
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 10,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10512,
+ "customerID": "FAMIA",
+ "employeeID": 7,
+ "orderDate": "1997-04-21 00:00:00.000",
+ "requiredDate": "1997-05-19 00:00:00.000",
+ "shippedDate": "1997-04-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.53,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 10,
+ "discount": 0.15
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 9,
+ "discount": 0.15
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 6,
+ "discount": 0.15
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 12,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10513,
+ "customerID": "WANDK",
+ "employeeID": 7,
+ "orderDate": "1997-04-22 00:00:00.000",
+ "requiredDate": "1997-06-03 00:00:00.000",
+ "shippedDate": "1997-04-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 105.65,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 50,
+ "discount": 0.2
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 15,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10506,
+ "customerID": "KOENE",
+ "employeeID": 9,
+ "orderDate": "1997-04-15 00:00:00.000",
+ "requiredDate": "1997-05-13 00:00:00.000",
+ "shippedDate": "1997-05-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 21.19,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 14,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10515,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1997-04-23 00:00:00.000",
+ "requiredDate": "1997-05-07 00:00:00.000",
+ "shippedDate": "1997-05-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 204.47,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 97,
+ "quantity": 16,
+ "discount": 0.15
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 120,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 16,
+ "discount": 0.15
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 84,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10516,
+ "customerID": "HUNGO",
+ "employeeID": 2,
+ "orderDate": "1997-04-24 00:00:00.000",
+ "requiredDate": "1997-05-22 00:00:00.000",
+ "shippedDate": "1997-05-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 62.78,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 80,
+ "discount": 0.1
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10507,
+ "customerID": "ANTON",
+ "employeeID": 7,
+ "orderDate": "1997-04-15 00:00:00.000",
+ "requiredDate": "1997-05-13 00:00:00.000",
+ "shippedDate": "1997-04-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 47.45,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 15,
+ "discount": 0.15
+ },
+ {
+ "productID": 48,
+ "unitPrice": 12.75,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10514,
+ "customerID": "ERNSH",
+ "employeeID": 3,
+ "orderDate": "1997-04-22 00:00:00.000",
+ "requiredDate": "1997-05-20 00:00:00.000",
+ "shippedDate": "1997-05-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 789.95,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 39,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 39,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 70,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10517,
+ "customerID": "NORTS",
+ "employeeID": 3,
+ "orderDate": "1997-04-24 00:00:00.000",
+ "requiredDate": "1997-05-22 00:00:00.000",
+ "shippedDate": "1997-04-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 32.07,
+ "shipName": "North/South",
+ "shipAddress": {
+ "street": "South House 300 Queensbridge",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "SW7 1RZ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10518,
+ "customerID": "TORTU",
+ "employeeID": 4,
+ "orderDate": "1997-04-25 00:00:00.000",
+ "requiredDate": "1997-05-09 00:00:00.000",
+ "shippedDate": "1997-05-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 218.15,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10519,
+ "customerID": "CHOPS",
+ "employeeID": 6,
+ "orderDate": "1997-04-28 00:00:00.000",
+ "requiredDate": "1997-05-26 00:00:00.000",
+ "shippedDate": "1997-05-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 91.76,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 16,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10520,
+ "customerID": "SANTG",
+ "employeeID": 7,
+ "orderDate": "1997-04-29 00:00:00.000",
+ "requiredDate": "1997-05-27 00:00:00.000",
+ "shippedDate": "1997-05-01 00:00:00.000",
+ "shipVia": 1,
+ "freight": 13.37,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10521,
+ "customerID": "CACTU",
+ "employeeID": 8,
+ "orderDate": "1997-04-29 00:00:00.000",
+ "requiredDate": "1997-05-27 00:00:00.000",
+ "shippedDate": "1997-05-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 17.22,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10522,
+ "customerID": "LEHMS",
+ "employeeID": 4,
+ "orderDate": "1997-04-30 00:00:00.000",
+ "requiredDate": "1997-05-28 00:00:00.000",
+ "shippedDate": "1997-05-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 45.33,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10523,
+ "customerID": "SEVES",
+ "employeeID": 7,
+ "orderDate": "1997-05-01 00:00:00.000",
+ "requiredDate": "1997-05-29 00:00:00.000",
+ "shippedDate": "1997-05-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 77.63,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 37,
+ "unitPrice": 26,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 6,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10524,
+ "customerID": "BERGS",
+ "employeeID": 1,
+ "orderDate": "1997-05-01 00:00:00.000",
+ "requiredDate": "1997-05-29 00:00:00.000",
+ "shippedDate": "1997-05-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 244.79,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10525,
+ "customerID": "BONAP",
+ "employeeID": 1,
+ "orderDate": "1997-05-02 00:00:00.000",
+ "requiredDate": "1997-05-30 00:00:00.000",
+ "shippedDate": "1997-05-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 11.06,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10526,
+ "customerID": "WARTH",
+ "employeeID": 4,
+ "orderDate": "1997-05-05 00:00:00.000",
+ "requiredDate": "1997-06-02 00:00:00.000",
+ "shippedDate": "1997-05-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.59,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 8,
+ "discount": 0.15
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10527,
+ "customerID": "QUICK",
+ "employeeID": 7,
+ "orderDate": "1997-05-05 00:00:00.000",
+ "requiredDate": "1997-06-02 00:00:00.000",
+ "shippedDate": "1997-05-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 41.9,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 50,
+ "discount": 0.1
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10528,
+ "customerID": "GREAL",
+ "employeeID": 6,
+ "orderDate": "1997-05-06 00:00:00.000",
+ "requiredDate": "1997-05-20 00:00:00.000",
+ "shippedDate": "1997-05-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.35,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 8,
+ "discount": 0.2
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10529,
+ "customerID": "MAISD",
+ "employeeID": 5,
+ "orderDate": "1997-05-07 00:00:00.000",
+ "requiredDate": "1997-06-04 00:00:00.000",
+ "shippedDate": "1997-05-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 66.69,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10530,
+ "customerID": "PICCO",
+ "employeeID": 3,
+ "orderDate": "1997-05-08 00:00:00.000",
+ "requiredDate": "1997-06-05 00:00:00.000",
+ "shippedDate": "1997-05-12 00:00:00.000",
+ "shipVia": 2,
+ "freight": 339.22,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10531,
+ "customerID": "OCEAN",
+ "employeeID": 7,
+ "orderDate": "1997-05-08 00:00:00.000",
+ "requiredDate": "1997-06-05 00:00:00.000",
+ "shippedDate": "1997-05-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.12,
+ "shipName": "Océano Atlántico Ltda.",
+ "shipAddress": {
+ "street": "Ing. Gustavo Moncada 8585 Piso 20-A",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10532,
+ "customerID": "EASTC",
+ "employeeID": 7,
+ "orderDate": "1997-05-09 00:00:00.000",
+ "requiredDate": "1997-06-06 00:00:00.000",
+ "shippedDate": "1997-05-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 74.46,
+ "shipName": "Eastern Connection",
+ "shipAddress": {
+ "street": "35 King George",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX3 6FW",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 66,
+ "unitPrice": 17,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10536,
+ "customerID": "LEHMS",
+ "employeeID": 3,
+ "orderDate": "1997-05-14 00:00:00.000",
+ "requiredDate": "1997-06-11 00:00:00.000",
+ "shippedDate": "1997-06-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.88,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10537,
+ "customerID": "RICSU",
+ "employeeID": 1,
+ "orderDate": "1997-05-14 00:00:00.000",
+ "requiredDate": "1997-05-28 00:00:00.000",
+ "shippedDate": "1997-05-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 78.85,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10538,
+ "customerID": "BSBEV",
+ "employeeID": 9,
+ "orderDate": "1997-05-15 00:00:00.000",
+ "requiredDate": "1997-06-12 00:00:00.000",
+ "shippedDate": "1997-05-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.87,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10539,
+ "customerID": "BSBEV",
+ "employeeID": 6,
+ "orderDate": "1997-05-16 00:00:00.000",
+ "requiredDate": "1997-06-13 00:00:00.000",
+ "shippedDate": "1997-05-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 12.36,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10540,
+ "customerID": "QUICK",
+ "employeeID": 3,
+ "orderDate": "1997-05-19 00:00:00.000",
+ "requiredDate": "1997-06-16 00:00:00.000",
+ "shippedDate": "1997-06-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1007.64,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10541,
+ "customerID": "HANAR",
+ "employeeID": 2,
+ "orderDate": "1997-05-19 00:00:00.000",
+ "requiredDate": "1997-06-16 00:00:00.000",
+ "shippedDate": "1997-05-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 68.65,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 35,
+ "discount": 0.1
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 4,
+ "discount": 0.1
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 36,
+ "discount": 0.1
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 9,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10534,
+ "customerID": "LEHMS",
+ "employeeID": 8,
+ "orderDate": "1997-05-12 00:00:00.000",
+ "requiredDate": "1997-06-09 00:00:00.000",
+ "shippedDate": "1997-05-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 27.94,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10533,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1997-05-12 00:00:00.000",
+ "requiredDate": "1997-06-09 00:00:00.000",
+ "shippedDate": "1997-05-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 188.04,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 50,
+ "discount": 0.05
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 24,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10535,
+ "customerID": "ANTON",
+ "employeeID": 4,
+ "orderDate": "1997-05-13 00:00:00.000",
+ "requiredDate": "1997-06-10 00:00:00.000",
+ "shippedDate": "1997-05-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 15.64,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 50,
+ "discount": 0.1
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 5,
+ "discount": 0.1
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10543,
+ "customerID": "LILAS",
+ "employeeID": 8,
+ "orderDate": "1997-05-21 00:00:00.000",
+ "requiredDate": "1997-06-18 00:00:00.000",
+ "shippedDate": "1997-05-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 48.17,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0.15
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 70,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10542,
+ "customerID": "KOENE",
+ "employeeID": 1,
+ "orderDate": "1997-05-20 00:00:00.000",
+ "requiredDate": "1997-06-17 00:00:00.000",
+ "shippedDate": "1997-05-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 10.95,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 24,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10546,
+ "customerID": "VICTE",
+ "employeeID": 1,
+ "orderDate": "1997-05-23 00:00:00.000",
+ "requiredDate": "1997-06-20 00:00:00.000",
+ "shippedDate": "1997-05-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 194.72,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10547,
+ "customerID": "SEVES",
+ "employeeID": 3,
+ "orderDate": "1997-05-23 00:00:00.000",
+ "requiredDate": "1997-06-20 00:00:00.000",
+ "shippedDate": "1997-06-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 178.43,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 24,
+ "discount": 0.15
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10548,
+ "customerID": "TOMSP",
+ "employeeID": 3,
+ "orderDate": "1997-05-26 00:00:00.000",
+ "requiredDate": "1997-06-23 00:00:00.000",
+ "shippedDate": "1997-06-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.43,
+ "shipName": "Toms Spezialitäten",
+ "shipAddress": {
+ "street": "Luisenstr. 48",
+ "city": "Münster",
+ "region": "NULL",
+ "postalCode": 44087,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0.25
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10550,
+ "customerID": "GODOS",
+ "employeeID": 7,
+ "orderDate": "1997-05-28 00:00:00.000",
+ "requiredDate": "1997-06-25 00:00:00.000",
+ "shippedDate": "1997-06-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.32,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 6,
+ "discount": 0.1
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10544,
+ "customerID": "LONEP",
+ "employeeID": 4,
+ "orderDate": "1997-05-21 00:00:00.000",
+ "requiredDate": "1997-06-18 00:00:00.000",
+ "shippedDate": "1997-05-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 24.91,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10553,
+ "customerID": "WARTH",
+ "employeeID": 2,
+ "orderDate": "1997-05-30 00:00:00.000",
+ "requiredDate": "1997-06-27 00:00:00.000",
+ "shippedDate": "1997-06-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 149.49,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10554,
+ "customerID": "OTTIK",
+ "employeeID": 4,
+ "orderDate": "1997-05-30 00:00:00.000",
+ "requiredDate": "1997-06-27 00:00:00.000",
+ "shippedDate": "1997-06-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 120.97,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10555,
+ "customerID": "SAVEA",
+ "employeeID": 6,
+ "orderDate": "1997-06-02 00:00:00.000",
+ "requiredDate": "1997-06-30 00:00:00.000",
+ "shippedDate": "1997-06-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 252.49,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 18,
+ "discount": 0.2
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10557,
+ "customerID": "LEHMS",
+ "employeeID": 9,
+ "orderDate": "1997-06-03 00:00:00.000",
+ "requiredDate": "1997-06-17 00:00:00.000",
+ "shippedDate": "1997-06-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 96.72,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10558,
+ "customerID": "AROUT",
+ "employeeID": 1,
+ "orderDate": "1997-06-04 00:00:00.000",
+ "requiredDate": "1997-07-02 00:00:00.000",
+ "shippedDate": "1997-06-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 72.97,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10551,
+ "customerID": "FURIB",
+ "employeeID": 4,
+ "orderDate": "1997-05-28 00:00:00.000",
+ "requiredDate": "1997-07-09 00:00:00.000",
+ "shippedDate": "1997-06-06 00:00:00.000",
+ "shipVia": 3,
+ "freight": 72.95,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10549,
+ "customerID": "QUICK",
+ "employeeID": 5,
+ "orderDate": "1997-05-27 00:00:00.000",
+ "requiredDate": "1997-06-10 00:00:00.000",
+ "shippedDate": "1997-05-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 171.24,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 55,
+ "discount": 0.15
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 100,
+ "discount": 0.15
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 48,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10552,
+ "customerID": "HILAA",
+ "employeeID": 2,
+ "orderDate": "1997-05-29 00:00:00.000",
+ "requiredDate": "1997-06-26 00:00:00.000",
+ "shippedDate": "1997-06-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 83.22,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10562,
+ "customerID": "REGGC",
+ "employeeID": 1,
+ "orderDate": "1997-06-09 00:00:00.000",
+ "requiredDate": "1997-07-07 00:00:00.000",
+ "shippedDate": "1997-06-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 22.95,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10563,
+ "customerID": "RICAR",
+ "employeeID": 2,
+ "orderDate": "1997-06-10 00:00:00.000",
+ "requiredDate": "1997-07-22 00:00:00.000",
+ "shippedDate": "1997-06-24 00:00:00.000",
+ "shipVia": 2,
+ "freight": 60.43,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 70,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10564,
+ "customerID": "RATTC",
+ "employeeID": 4,
+ "orderDate": "1997-06-10 00:00:00.000",
+ "requiredDate": "1997-07-08 00:00:00.000",
+ "shippedDate": "1997-06-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.75,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 16,
+ "discount": 0.05
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 6,
+ "discount": 0.05
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 25,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10565,
+ "customerID": "MEREP",
+ "employeeID": 8,
+ "orderDate": "1997-06-11 00:00:00.000",
+ "requiredDate": "1997-07-09 00:00:00.000",
+ "shippedDate": "1997-06-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.15,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 18,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10566,
+ "customerID": "BLONP",
+ "employeeID": 9,
+ "orderDate": "1997-06-12 00:00:00.000",
+ "requiredDate": "1997-07-10 00:00:00.000",
+ "shippedDate": "1997-06-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 88.4,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 18,
+ "discount": 0.15
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10567,
+ "customerID": "HUNGO",
+ "employeeID": 1,
+ "orderDate": "1997-06-12 00:00:00.000",
+ "requiredDate": "1997-07-10 00:00:00.000",
+ "shippedDate": "1997-06-17 00:00:00.000",
+ "shipVia": 1,
+ "freight": 33.97,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 60,
+ "discount": 0.2
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 40,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10559,
+ "customerID": "BLONP",
+ "employeeID": 6,
+ "orderDate": "1997-06-05 00:00:00.000",
+ "requiredDate": "1997-07-03 00:00:00.000",
+ "shippedDate": "1997-06-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.05,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 18,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10569,
+ "customerID": "RATTC",
+ "employeeID": 5,
+ "orderDate": "1997-06-16 00:00:00.000",
+ "requiredDate": "1997-07-14 00:00:00.000",
+ "shippedDate": "1997-07-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 58.98,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10560,
+ "customerID": "FRANK",
+ "employeeID": 8,
+ "orderDate": "1997-06-06 00:00:00.000",
+ "requiredDate": "1997-07-04 00:00:00.000",
+ "shippedDate": "1997-06-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 36.65,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10570,
+ "customerID": "MEREP",
+ "employeeID": 3,
+ "orderDate": "1997-06-17 00:00:00.000",
+ "requiredDate": "1997-07-15 00:00:00.000",
+ "shippedDate": "1997-06-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 188.99,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 60,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10571,
+ "customerID": "ERNSH",
+ "employeeID": 8,
+ "orderDate": "1997-06-17 00:00:00.000",
+ "requiredDate": "1997-07-29 00:00:00.000",
+ "shippedDate": "1997-07-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 26.06,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 11,
+ "discount": 0.15
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 28,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10572,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1997-06-18 00:00:00.000",
+ "requiredDate": "1997-07-16 00:00:00.000",
+ "shippedDate": "1997-06-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 116.43,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 12,
+ "discount": 0.1
+ },
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10561,
+ "customerID": "FOLKO",
+ "employeeID": 2,
+ "orderDate": "1997-06-06 00:00:00.000",
+ "requiredDate": "1997-07-04 00:00:00.000",
+ "shippedDate": "1997-06-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 242.21,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10573,
+ "customerID": "ANTON",
+ "employeeID": 7,
+ "orderDate": "1997-06-19 00:00:00.000",
+ "requiredDate": "1997-07-17 00:00:00.000",
+ "shippedDate": "1997-06-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 84.84,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10574,
+ "customerID": "TRAIH",
+ "employeeID": 4,
+ "orderDate": "1997-06-19 00:00:00.000",
+ "requiredDate": "1997-07-17 00:00:00.000",
+ "shippedDate": "1997-06-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 37.6,
+ "shipName": "Trail's Head Gourmet Provisioners",
+ "shipAddress": {
+ "street": "722 DaVinci Blvd.",
+ "city": "Kirkland",
+ "region": "WA",
+ "postalCode": 98034,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10578,
+ "customerID": "BSBEV",
+ "employeeID": 4,
+ "orderDate": "1997-06-24 00:00:00.000",
+ "requiredDate": "1997-07-22 00:00:00.000",
+ "shippedDate": "1997-07-25 00:00:00.000",
+ "shipVia": 3,
+ "freight": 29.6,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10579,
+ "customerID": "LETSS",
+ "employeeID": 1,
+ "orderDate": "1997-06-25 00:00:00.000",
+ "requiredDate": "1997-07-23 00:00:00.000",
+ "shippedDate": "1997-07-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.73,
+ "shipName": "Let's Stop N Shop",
+ "shipAddress": {
+ "street": "87 Polk St. Suite 5",
+ "city": "San Francisco",
+ "region": "CA",
+ "postalCode": 94117,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 15.5,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10580,
+ "customerID": "OTTIK",
+ "employeeID": 4,
+ "orderDate": "1997-06-26 00:00:00.000",
+ "requiredDate": "1997-07-24 00:00:00.000",
+ "shippedDate": "1997-07-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 75.89,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 9,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 30,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10582,
+ "customerID": "BLAUS",
+ "employeeID": 3,
+ "orderDate": "1997-06-27 00:00:00.000",
+ "requiredDate": "1997-07-25 00:00:00.000",
+ "shippedDate": "1997-07-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 27.71,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10583,
+ "customerID": "WARTH",
+ "employeeID": 2,
+ "orderDate": "1997-06-30 00:00:00.000",
+ "requiredDate": "1997-07-28 00:00:00.000",
+ "shippedDate": "1997-07-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.28,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 24,
+ "discount": 0.15
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 10,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10577,
+ "customerID": "TRAIH",
+ "employeeID": 9,
+ "orderDate": "1997-06-23 00:00:00.000",
+ "requiredDate": "1997-08-04 00:00:00.000",
+ "shippedDate": "1997-06-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 25.41,
+ "shipName": "Trail's Head Gourmet Provisioners",
+ "shipAddress": {
+ "street": "722 DaVinci Blvd.",
+ "city": "Kirkland",
+ "region": "WA",
+ "postalCode": 98034,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10576,
+ "customerID": "TORTU",
+ "employeeID": 3,
+ "orderDate": "1997-06-23 00:00:00.000",
+ "requiredDate": "1997-07-07 00:00:00.000",
+ "shippedDate": "1997-06-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 18.56,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10587,
+ "customerID": "QUEDE",
+ "employeeID": 1,
+ "orderDate": "1997-07-02 00:00:00.000",
+ "requiredDate": "1997-07-30 00:00:00.000",
+ "shippedDate": "1997-07-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 62.52,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10588,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1997-07-03 00:00:00.000",
+ "requiredDate": "1997-07-31 00:00:00.000",
+ "shippedDate": "1997-07-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 194.67,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 100,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10590,
+ "customerID": "MEREP",
+ "employeeID": 4,
+ "orderDate": "1997-07-07 00:00:00.000",
+ "requiredDate": "1997-08-04 00:00:00.000",
+ "shippedDate": "1997-07-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 44.77,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 60,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10575,
+ "customerID": "MORGK",
+ "employeeID": 5,
+ "orderDate": "1997-06-20 00:00:00.000",
+ "requiredDate": "1997-07-04 00:00:00.000",
+ "shippedDate": "1997-06-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 127.34,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10591,
+ "customerID": "VAFFE",
+ "employeeID": 1,
+ "orderDate": "1997-07-07 00:00:00.000",
+ "requiredDate": "1997-07-21 00:00:00.000",
+ "shippedDate": "1997-07-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.92,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10595,
+ "customerID": "ERNSH",
+ "employeeID": 2,
+ "orderDate": "1997-07-10 00:00:00.000",
+ "requiredDate": "1997-08-07 00:00:00.000",
+ "shippedDate": "1997-07-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 96.78,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 65,
+ "discount": 0.25
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 120,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10596,
+ "customerID": "WHITC",
+ "employeeID": 8,
+ "orderDate": "1997-07-11 00:00:00.000",
+ "requiredDate": "1997-08-08 00:00:00.000",
+ "shippedDate": "1997-08-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.34,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 5,
+ "discount": 0.2
+ },
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 24,
+ "discount": 0.2
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 30,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10597,
+ "customerID": "PICCO",
+ "employeeID": 7,
+ "orderDate": "1997-07-11 00:00:00.000",
+ "requiredDate": "1997-08-08 00:00:00.000",
+ "shippedDate": "1997-07-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 35.12,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 12,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10598,
+ "customerID": "RATTC",
+ "employeeID": 1,
+ "orderDate": "1997-07-14 00:00:00.000",
+ "requiredDate": "1997-08-11 00:00:00.000",
+ "shippedDate": "1997-07-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 44.42,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10600,
+ "customerID": "HUNGC",
+ "employeeID": 4,
+ "orderDate": "1997-07-16 00:00:00.000",
+ "requiredDate": "1997-08-13 00:00:00.000",
+ "shippedDate": "1997-07-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 45.13,
+ "shipName": "Hungry Coyote Import Store",
+ "shipAddress": {
+ "street": "City Center Plaza 516 Main St.",
+ "city": "Elgin",
+ "region": "OR",
+ "postalCode": 97827,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10601,
+ "customerID": "HILAA",
+ "employeeID": 7,
+ "orderDate": "1997-07-16 00:00:00.000",
+ "requiredDate": "1997-08-27 00:00:00.000",
+ "shippedDate": "1997-07-22 00:00:00.000",
+ "shipVia": 1,
+ "freight": 58.3,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10603,
+ "customerID": "SAVEA",
+ "employeeID": 8,
+ "orderDate": "1997-07-18 00:00:00.000",
+ "requiredDate": "1997-08-15 00:00:00.000",
+ "shippedDate": "1997-08-08 00:00:00.000",
+ "shipVia": 2,
+ "freight": 48.77,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 48,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 25,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10604,
+ "customerID": "FURIB",
+ "employeeID": 1,
+ "orderDate": "1997-07-18 00:00:00.000",
+ "requiredDate": "1997-08-15 00:00:00.000",
+ "shippedDate": "1997-07-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 7.46,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 48,
+ "unitPrice": 12.75,
+ "quantity": 6,
+ "discount": 0.1
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10605,
+ "customerID": "MEREP",
+ "employeeID": 1,
+ "orderDate": "1997-07-21 00:00:00.000",
+ "requiredDate": "1997-08-18 00:00:00.000",
+ "shippedDate": "1997-07-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 379.13,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 70,
+ "discount": 0.05
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10606,
+ "customerID": "TRADH",
+ "employeeID": 4,
+ "orderDate": "1997-07-22 00:00:00.000",
+ "requiredDate": "1997-08-19 00:00:00.000",
+ "shippedDate": "1997-07-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 79.4,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10594,
+ "customerID": "OLDWO",
+ "employeeID": 3,
+ "orderDate": "1997-07-09 00:00:00.000",
+ "requiredDate": "1997-08-06 00:00:00.000",
+ "shippedDate": "1997-07-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 5.24,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10593,
+ "customerID": "LEHMS",
+ "employeeID": 7,
+ "orderDate": "1997-07-09 00:00:00.000",
+ "requiredDate": "1997-08-06 00:00:00.000",
+ "shippedDate": "1997-08-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 174.2,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 21,
+ "discount": 0.2
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 4,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10592,
+ "customerID": "LEHMS",
+ "employeeID": 3,
+ "orderDate": "1997-07-08 00:00:00.000",
+ "requiredDate": "1997-08-05 00:00:00.000",
+ "shippedDate": "1997-07-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 32.1,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 15,
+ "unitPrice": 15.5,
+ "quantity": 25,
+ "discount": 0.05
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 5,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10607,
+ "customerID": "SAVEA",
+ "employeeID": 5,
+ "orderDate": "1997-07-22 00:00:00.000",
+ "requiredDate": "1997-08-19 00:00:00.000",
+ "shippedDate": "1997-07-25 00:00:00.000",
+ "shipVia": 1,
+ "freight": 200.24,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 100,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10609,
+ "customerID": "DUMON",
+ "employeeID": 7,
+ "orderDate": "1997-07-24 00:00:00.000",
+ "requiredDate": "1997-08-21 00:00:00.000",
+ "shippedDate": "1997-07-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.85,
+ "shipName": "Du monde entier",
+ "shipAddress": {
+ "street": "67 rue des Cinquante Otages",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10614,
+ "customerID": "BLAUS",
+ "employeeID": 8,
+ "orderDate": "1997-07-29 00:00:00.000",
+ "requiredDate": "1997-08-26 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.93,
+ "shipName": "Blauer See Delikatessen",
+ "shipAddress": {
+ "street": "Forsterstr. 57",
+ "city": "Mannheim",
+ "region": "NULL",
+ "postalCode": 68306,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10616,
+ "customerID": "GREAL",
+ "employeeID": 1,
+ "orderDate": "1997-07-31 00:00:00.000",
+ "requiredDate": "1997-08-28 00:00:00.000",
+ "shippedDate": "1997-08-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 116.53,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10618,
+ "customerID": "MEREP",
+ "employeeID": 1,
+ "orderDate": "1997-08-01 00:00:00.000",
+ "requiredDate": "1997-09-12 00:00:00.000",
+ "shippedDate": "1997-08-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 154.68,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10619,
+ "customerID": "MEREP",
+ "employeeID": 3,
+ "orderDate": "1997-08-04 00:00:00.000",
+ "requiredDate": "1997-09-01 00:00:00.000",
+ "shippedDate": "1997-08-07 00:00:00.000",
+ "shipVia": 3,
+ "freight": 91.05,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10612,
+ "customerID": "SAVEA",
+ "employeeID": 1,
+ "orderDate": "1997-07-28 00:00:00.000",
+ "requiredDate": "1997-08-25 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 544.08,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 70,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 55,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 80,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10613,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1997-07-29 00:00:00.000",
+ "requiredDate": "1997-08-26 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.11,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10611,
+ "customerID": "WOLZA",
+ "employeeID": 6,
+ "orderDate": "1997-07-25 00:00:00.000",
+ "requiredDate": "1997-08-22 00:00:00.000",
+ "shippedDate": "1997-08-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 80.65,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10621,
+ "customerID": "ISLAT",
+ "employeeID": 4,
+ "orderDate": "1997-08-05 00:00:00.000",
+ "requiredDate": "1997-09-02 00:00:00.000",
+ "shippedDate": "1997-08-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 23.73,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10620,
+ "customerID": "LAUGB",
+ "employeeID": 2,
+ "orderDate": "1997-08-05 00:00:00.000",
+ "requiredDate": "1997-09-02 00:00:00.000",
+ "shippedDate": "1997-08-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 0.94,
+ "shipName": "Laughing Bacchus Wine Cellars",
+ "shipAddress": {
+ "street": "2319 Elm St.",
+ "city": "Vancouver",
+ "region": "BC",
+ "postalCode": "V3F 2K1",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10625,
+ "customerID": "ANATR",
+ "employeeID": 3,
+ "orderDate": "1997-08-08 00:00:00.000",
+ "requiredDate": "1997-09-05 00:00:00.000",
+ "shippedDate": "1997-08-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 43.9,
+ "shipName": "Ana Trujillo Emparedados y helados",
+ "shipAddress": {
+ "street": "Avda. de la Constitución 2222",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5021,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10623,
+ "customerID": "FRANK",
+ "employeeID": 8,
+ "orderDate": "1997-08-07 00:00:00.000",
+ "requiredDate": "1997-09-04 00:00:00.000",
+ "shippedDate": "1997-08-12 00:00:00.000",
+ "shipVia": 2,
+ "freight": 97.18,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10622,
+ "customerID": "RICAR",
+ "employeeID": 4,
+ "orderDate": "1997-08-06 00:00:00.000",
+ "requiredDate": "1997-09-03 00:00:00.000",
+ "shippedDate": "1997-08-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 50.97,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 18,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10624,
+ "customerID": "THECR",
+ "employeeID": 4,
+ "orderDate": "1997-08-07 00:00:00.000",
+ "requiredDate": "1997-09-04 00:00:00.000",
+ "shippedDate": "1997-08-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 94.8,
+ "shipName": "The Cracker Box",
+ "shipAddress": {
+ "street": "55 Grizzly Peak Rd.",
+ "city": "Butte",
+ "region": "MT",
+ "postalCode": 59801,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10626,
+ "customerID": "BERGS",
+ "employeeID": 1,
+ "orderDate": "1997-08-11 00:00:00.000",
+ "requiredDate": "1997-09-08 00:00:00.000",
+ "shippedDate": "1997-08-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 138.69,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10627,
+ "customerID": "SAVEA",
+ "employeeID": 8,
+ "orderDate": "1997-08-11 00:00:00.000",
+ "requiredDate": "1997-09-22 00:00:00.000",
+ "shippedDate": "1997-08-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 107.46,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 35,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10630,
+ "customerID": "KOENE",
+ "employeeID": 1,
+ "orderDate": "1997-08-13 00:00:00.000",
+ "requiredDate": "1997-09-10 00:00:00.000",
+ "shippedDate": "1997-08-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 32.35,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10629,
+ "customerID": "GODOS",
+ "employeeID": 4,
+ "orderDate": "1997-08-12 00:00:00.000",
+ "requiredDate": "1997-09-09 00:00:00.000",
+ "shippedDate": "1997-08-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 85.46,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 9,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10632,
+ "customerID": "WANDK",
+ "employeeID": 8,
+ "orderDate": "1997-08-14 00:00:00.000",
+ "requiredDate": "1997-09-11 00:00:00.000",
+ "shippedDate": "1997-08-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 41.38,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10633,
+ "customerID": "ERNSH",
+ "employeeID": 7,
+ "orderDate": "1997-08-15 00:00:00.000",
+ "requiredDate": "1997-09-12 00:00:00.000",
+ "shippedDate": "1997-08-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 477.9,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 36,
+ "discount": 0.15
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 13,
+ "discount": 0.15
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 35,
+ "discount": 0.15
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 80,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10634,
+ "customerID": "FOLIG",
+ "employeeID": 4,
+ "orderDate": "1997-08-15 00:00:00.000",
+ "requiredDate": "1997-09-12 00:00:00.000",
+ "shippedDate": "1997-08-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 487.38,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10638,
+ "customerID": "LINOD",
+ "employeeID": 3,
+ "orderDate": "1997-08-20 00:00:00.000",
+ "requiredDate": "1997-09-17 00:00:00.000",
+ "shippedDate": "1997-09-01 00:00:00.000",
+ "shipVia": 1,
+ "freight": 158.44,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10640,
+ "customerID": "WANDK",
+ "employeeID": 4,
+ "orderDate": "1997-08-21 00:00:00.000",
+ "requiredDate": "1997-09-18 00:00:00.000",
+ "shippedDate": "1997-08-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 23.55,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10641,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1997-08-22 00:00:00.000",
+ "requiredDate": "1997-09-19 00:00:00.000",
+ "shippedDate": "1997-08-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 179.61,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10642,
+ "customerID": "SIMOB",
+ "employeeID": 7,
+ "orderDate": "1997-08-22 00:00:00.000",
+ "requiredDate": "1997-09-19 00:00:00.000",
+ "shippedDate": "1997-09-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 41.89,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10643,
+ "customerID": "ALFKI",
+ "employeeID": 6,
+ "orderDate": "1997-08-25 00:00:00.000",
+ "requiredDate": "1997-09-22 00:00:00.000",
+ "shippedDate": "1997-09-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 29.46,
+ "shipName": "Alfreds Futterkiste",
+ "shipAddress": {
+ "street": "Obere Str. 57",
+ "city": "Berlin",
+ "region": "NULL",
+ "postalCode": 12209,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 2,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10636,
+ "customerID": "WARTH",
+ "employeeID": 4,
+ "orderDate": "1997-08-19 00:00:00.000",
+ "requiredDate": "1997-09-16 00:00:00.000",
+ "shippedDate": "1997-08-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.15,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10644,
+ "customerID": "WELLI",
+ "employeeID": 3,
+ "orderDate": "1997-08-25 00:00:00.000",
+ "requiredDate": "1997-09-22 00:00:00.000",
+ "shippedDate": "1997-09-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.14,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 4,
+ "discount": 0.1
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 21,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10635,
+ "customerID": "MAGAA",
+ "employeeID": 8,
+ "orderDate": "1997-08-18 00:00:00.000",
+ "requiredDate": "1997-09-15 00:00:00.000",
+ "shippedDate": "1997-08-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 47.46,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 5,
+ "unitPrice": 21.35,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 10,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10637,
+ "customerID": "QUEEN",
+ "employeeID": 6,
+ "orderDate": "1997-08-19 00:00:00.000",
+ "requiredDate": "1997-09-16 00:00:00.000",
+ "shippedDate": "1997-08-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 201.29,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 50,
+ "unitPrice": 16.25,
+ "quantity": 25,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 60,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10645,
+ "customerID": "HANAR",
+ "employeeID": 4,
+ "orderDate": "1997-08-26 00:00:00.000",
+ "requiredDate": "1997-09-23 00:00:00.000",
+ "shippedDate": "1997-09-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 12.41,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10649,
+ "customerID": "MAISD",
+ "employeeID": 5,
+ "orderDate": "1997-08-28 00:00:00.000",
+ "requiredDate": "1997-09-25 00:00:00.000",
+ "shippedDate": "1997-08-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 6.2,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10650,
+ "customerID": "FAMIA",
+ "employeeID": 5,
+ "orderDate": "1997-08-29 00:00:00.000",
+ "requiredDate": "1997-09-26 00:00:00.000",
+ "shippedDate": "1997-09-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 176.81,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 25,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10651,
+ "customerID": "WANDK",
+ "employeeID": 8,
+ "orderDate": "1997-09-01 00:00:00.000",
+ "requiredDate": "1997-09-29 00:00:00.000",
+ "shippedDate": "1997-09-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 20.6,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 20,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10652,
+ "customerID": "GOURL",
+ "employeeID": 4,
+ "orderDate": "1997-09-01 00:00:00.000",
+ "requiredDate": "1997-09-29 00:00:00.000",
+ "shippedDate": "1997-09-08 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.14,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 2,
+ "discount": 0.25
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10653,
+ "customerID": "FRANK",
+ "employeeID": 1,
+ "orderDate": "1997-09-02 00:00:00.000",
+ "requiredDate": "1997-09-30 00:00:00.000",
+ "shippedDate": "1997-09-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 93.25,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10654,
+ "customerID": "BERGS",
+ "employeeID": 5,
+ "orderDate": "1997-09-02 00:00:00.000",
+ "requiredDate": "1997-09-30 00:00:00.000",
+ "shippedDate": "1997-09-11 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.26,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 12,
+ "discount": 0.1
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 6,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10647,
+ "customerID": "QUEDE",
+ "employeeID": 4,
+ "orderDate": "1997-08-27 00:00:00.000",
+ "requiredDate": "1997-09-10 00:00:00.000",
+ "shippedDate": "1997-09-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 45.54,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10656,
+ "customerID": "GREAL",
+ "employeeID": 6,
+ "orderDate": "1997-09-04 00:00:00.000",
+ "requiredDate": "1997-10-02 00:00:00.000",
+ "shippedDate": "1997-09-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 57.15,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 3,
+ "discount": 0.1
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 28,
+ "discount": 0.1
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 6,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10657,
+ "customerID": "SAVEA",
+ "employeeID": 2,
+ "orderDate": "1997-09-04 00:00:00.000",
+ "requiredDate": "1997-10-02 00:00:00.000",
+ "shippedDate": "1997-09-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 352.69,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 15,
+ "unitPrice": 15.5,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10658,
+ "customerID": "QUICK",
+ "employeeID": 4,
+ "orderDate": "1997-09-05 00:00:00.000",
+ "requiredDate": "1997-10-03 00:00:00.000",
+ "shippedDate": "1997-09-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 364.15,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 70,
+ "discount": 0.05
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 55,
+ "discount": 0.05
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 70,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10646,
+ "customerID": "HUNGO",
+ "employeeID": 9,
+ "orderDate": "1997-08-27 00:00:00.000",
+ "requiredDate": "1997-10-08 00:00:00.000",
+ "shippedDate": "1997-09-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 142.33,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 15,
+ "discount": 0.25
+ },
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 18,
+ "discount": 0.25
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 35,
+ "discount": 0.25
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10648,
+ "customerID": "RICAR",
+ "employeeID": 5,
+ "orderDate": "1997-08-28 00:00:00.000",
+ "requiredDate": "1997-10-09 00:00:00.000",
+ "shippedDate": "1997-09-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 14.25,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10659,
+ "customerID": "QUEEN",
+ "employeeID": 7,
+ "orderDate": "1997-09-05 00:00:00.000",
+ "requiredDate": "1997-10-03 00:00:00.000",
+ "shippedDate": "1997-09-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 105.81,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 24,
+ "discount": 0.05
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10664,
+ "customerID": "FURIB",
+ "employeeID": 1,
+ "orderDate": "1997-09-10 00:00:00.000",
+ "requiredDate": "1997-10-08 00:00:00.000",
+ "shippedDate": "1997-09-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.27,
+ "shipName": "Furia Bacalhau e Frutos do Mar",
+ "shipAddress": {
+ "street": "Jardim das rosas n. 32",
+ "city": "Lisboa",
+ "region": "NULL",
+ "postalCode": 1675,
+ "country": "Portugal"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 24,
+ "discount": 0.15
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 12,
+ "discount": 0.15
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10661,
+ "customerID": "HUNGO",
+ "employeeID": 7,
+ "orderDate": "1997-09-09 00:00:00.000",
+ "requiredDate": "1997-10-07 00:00:00.000",
+ "shippedDate": "1997-09-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 17.55,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 3,
+ "discount": 0.2
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 49,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10665,
+ "customerID": "LONEP",
+ "employeeID": 1,
+ "orderDate": "1997-09-11 00:00:00.000",
+ "requiredDate": "1997-10-09 00:00:00.000",
+ "shippedDate": "1997-09-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 26.31,
+ "shipName": "Lonesome Pine Restaurant",
+ "shipAddress": {
+ "street": "89 Chiaroscuro Rd.",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97219,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 1,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10663,
+ "customerID": "BONAP",
+ "employeeID": 2,
+ "orderDate": "1997-09-10 00:00:00.000",
+ "requiredDate": "1997-09-24 00:00:00.000",
+ "shippedDate": "1997-10-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 113.15,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10666,
+ "customerID": "RICSU",
+ "employeeID": 7,
+ "orderDate": "1997-09-12 00:00:00.000",
+ "requiredDate": "1997-10-10 00:00:00.000",
+ "shippedDate": "1997-09-22 00:00:00.000",
+ "shipVia": 2,
+ "freight": 232.42,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10667,
+ "customerID": "ERNSH",
+ "employeeID": 7,
+ "orderDate": "1997-09-12 00:00:00.000",
+ "requiredDate": "1997-10-10 00:00:00.000",
+ "shippedDate": "1997-09-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 78.09,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 45,
+ "discount": 0.2
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 14,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10668,
+ "customerID": "WANDK",
+ "employeeID": 1,
+ "orderDate": "1997-09-15 00:00:00.000",
+ "requiredDate": "1997-10-13 00:00:00.000",
+ "shippedDate": "1997-09-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 47.22,
+ "shipName": "Die Wandernde Kuh",
+ "shipAddress": {
+ "street": "Adenauerallee 900",
+ "city": "Stuttgart",
+ "region": "NULL",
+ "postalCode": 70563,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 8,
+ "discount": 0.1
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 4,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10670,
+ "customerID": "FRANK",
+ "employeeID": 4,
+ "orderDate": "1997-09-16 00:00:00.000",
+ "requiredDate": "1997-10-14 00:00:00.000",
+ "shippedDate": "1997-09-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 203.48,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 32,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10672,
+ "customerID": "BERGS",
+ "employeeID": 9,
+ "orderDate": "1997-09-17 00:00:00.000",
+ "requiredDate": "1997-10-01 00:00:00.000",
+ "shippedDate": "1997-09-26 00:00:00.000",
+ "shipVia": 2,
+ "freight": 95.75,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 15,
+ "discount": 0.1
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10671,
+ "customerID": "FRANR",
+ "employeeID": 1,
+ "orderDate": "1997-09-17 00:00:00.000",
+ "requiredDate": "1997-10-15 00:00:00.000",
+ "shippedDate": "1997-09-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 30.34,
+ "shipName": "France restauration",
+ "shipAddress": {
+ "street": "54 rue Royale",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10673,
+ "customerID": "WILMK",
+ "employeeID": 2,
+ "orderDate": "1997-09-18 00:00:00.000",
+ "requiredDate": "1997-10-16 00:00:00.000",
+ "shippedDate": "1997-09-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 22.76,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10677,
+ "customerID": "ANTON",
+ "employeeID": 1,
+ "orderDate": "1997-09-22 00:00:00.000",
+ "requiredDate": "1997-10-20 00:00:00.000",
+ "shippedDate": "1997-09-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.03,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 30,
+ "discount": 0.15
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 8,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10678,
+ "customerID": "SAVEA",
+ "employeeID": 7,
+ "orderDate": "1997-09-23 00:00:00.000",
+ "requiredDate": "1997-10-21 00:00:00.000",
+ "shippedDate": "1997-10-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 388.98,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 100,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 120,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10680,
+ "customerID": "OLDWO",
+ "employeeID": 1,
+ "orderDate": "1997-09-24 00:00:00.000",
+ "requiredDate": "1997-10-22 00:00:00.000",
+ "shippedDate": "1997-09-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 26.61,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 40,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10681,
+ "customerID": "GREAL",
+ "employeeID": 3,
+ "orderDate": "1997-09-25 00:00:00.000",
+ "requiredDate": "1997-10-23 00:00:00.000",
+ "shippedDate": "1997-09-30 00:00:00.000",
+ "shipVia": 3,
+ "freight": 76.13,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 12,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10682,
+ "customerID": "ANTON",
+ "employeeID": 3,
+ "orderDate": "1997-09-25 00:00:00.000",
+ "requiredDate": "1997-10-23 00:00:00.000",
+ "shippedDate": "1997-10-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 36.13,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 66,
+ "unitPrice": 17,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10675,
+ "customerID": "FRANK",
+ "employeeID": 5,
+ "orderDate": "1997-09-19 00:00:00.000",
+ "requiredDate": "1997-10-17 00:00:00.000",
+ "shippedDate": "1997-09-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 31.85,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10684,
+ "customerID": "OTTIK",
+ "employeeID": 3,
+ "orderDate": "1997-09-26 00:00:00.000",
+ "requiredDate": "1997-10-24 00:00:00.000",
+ "shippedDate": "1997-09-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 145.63,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10685,
+ "customerID": "GOURL",
+ "employeeID": 4,
+ "orderDate": "1997-09-29 00:00:00.000",
+ "requiredDate": "1997-10-13 00:00:00.000",
+ "shippedDate": "1997-10-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 33.75,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10676,
+ "customerID": "TORTU",
+ "employeeID": 2,
+ "orderDate": "1997-09-22 00:00:00.000",
+ "requiredDate": "1997-10-20 00:00:00.000",
+ "shippedDate": "1997-09-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.01,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10686,
+ "customerID": "PICCO",
+ "employeeID": 2,
+ "orderDate": "1997-09-30 00:00:00.000",
+ "requiredDate": "1997-10-28 00:00:00.000",
+ "shippedDate": "1997-10-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 96.5,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 30,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10687,
+ "customerID": "HUNGO",
+ "employeeID": 9,
+ "orderDate": "1997-09-30 00:00:00.000",
+ "requiredDate": "1997-10-28 00:00:00.000",
+ "shippedDate": "1997-10-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 296.43,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 97,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 6,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10691,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1997-10-03 00:00:00.000",
+ "requiredDate": "1997-11-14 00:00:00.000",
+ "shippedDate": "1997-10-22 00:00:00.000",
+ "shipVia": 2,
+ "freight": 810.05,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 48,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10693,
+ "customerID": "WHITC",
+ "employeeID": 3,
+ "orderDate": "1997-10-06 00:00:00.000",
+ "requiredDate": "1997-10-20 00:00:00.000",
+ "shippedDate": "1997-10-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 139.34,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 97,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 60,
+ "discount": 0.15
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 30,
+ "discount": 0.15
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10694,
+ "customerID": "QUICK",
+ "employeeID": 8,
+ "orderDate": "1997-10-06 00:00:00.000",
+ "requiredDate": "1997-11-03 00:00:00.000",
+ "shippedDate": "1997-10-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 398.36,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 90,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10695,
+ "customerID": "WILMK",
+ "employeeID": 7,
+ "orderDate": "1997-10-07 00:00:00.000",
+ "requiredDate": "1997-11-18 00:00:00.000",
+ "shippedDate": "1997-10-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.72,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10696,
+ "customerID": "WHITC",
+ "employeeID": 8,
+ "orderDate": "1997-10-08 00:00:00.000",
+ "requiredDate": "1997-11-19 00:00:00.000",
+ "shippedDate": "1997-10-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 102.55,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10697,
+ "customerID": "LINOD",
+ "employeeID": 3,
+ "orderDate": "1997-10-08 00:00:00.000",
+ "requiredDate": "1997-11-05 00:00:00.000",
+ "shippedDate": "1997-10-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 45.52,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 9,
+ "discount": 0.25
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 7,
+ "discount": 0.25
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10698,
+ "customerID": "ERNSH",
+ "employeeID": 4,
+ "orderDate": "1997-10-09 00:00:00.000",
+ "requiredDate": "1997-11-06 00:00:00.000",
+ "shippedDate": "1997-10-17 00:00:00.000",
+ "shipVia": 1,
+ "freight": 272.47,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 8,
+ "discount": 0.05
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 65,
+ "discount": 0.05
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 8,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10690,
+ "customerID": "HANAR",
+ "employeeID": 1,
+ "orderDate": "1997-10-02 00:00:00.000",
+ "requiredDate": "1997-10-30 00:00:00.000",
+ "shippedDate": "1997-10-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 15.8,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10702,
+ "customerID": "ALFKI",
+ "employeeID": 4,
+ "orderDate": "1997-10-13 00:00:00.000",
+ "requiredDate": "1997-11-24 00:00:00.000",
+ "shippedDate": "1997-10-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 23.94,
+ "shipName": "Alfred's Futterkiste",
+ "shipAddress": {
+ "street": "Obere Str. 57",
+ "city": "Berlin",
+ "region": "NULL",
+ "postalCode": 12209,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10700,
+ "customerID": "SAVEA",
+ "employeeID": 3,
+ "orderDate": "1997-10-10 00:00:00.000",
+ "requiredDate": "1997-11-07 00:00:00.000",
+ "shippedDate": "1997-10-16 00:00:00.000",
+ "shipVia": 1,
+ "freight": 65.1,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 5,
+ "discount": 0.2
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 60,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10688,
+ "customerID": "VAFFE",
+ "employeeID": 4,
+ "orderDate": "1997-10-01 00:00:00.000",
+ "requiredDate": "1997-10-15 00:00:00.000",
+ "shippedDate": "1997-10-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 299.09,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 18,
+ "discount": 0.1
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 60,
+ "discount": 0.1
+ },
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10701,
+ "customerID": "HUNGO",
+ "employeeID": 6,
+ "orderDate": "1997-10-13 00:00:00.000",
+ "requiredDate": "1997-10-27 00:00:00.000",
+ "shippedDate": "1997-10-15 00:00:00.000",
+ "shipVia": 3,
+ "freight": 220.31,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 42,
+ "discount": 0.15
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 35,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10703,
+ "customerID": "FOLKO",
+ "employeeID": 6,
+ "orderDate": "1997-10-14 00:00:00.000",
+ "requiredDate": "1997-11-11 00:00:00.000",
+ "shippedDate": "1997-10-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 152.3,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10704,
+ "customerID": "QUEEN",
+ "employeeID": 6,
+ "orderDate": "1997-10-14 00:00:00.000",
+ "requiredDate": "1997-11-11 00:00:00.000",
+ "shippedDate": "1997-11-07 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.78,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 48,
+ "unitPrice": 12.75,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10708,
+ "customerID": "THEBI",
+ "employeeID": 6,
+ "orderDate": "1997-10-17 00:00:00.000",
+ "requiredDate": "1997-11-28 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.96,
+ "shipName": "The Big Cheese",
+ "shipAddress": {
+ "street": "89 Jefferson Way Suite 2",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97201,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 5,
+ "unitPrice": 21.35,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10709,
+ "customerID": "GOURL",
+ "employeeID": 1,
+ "orderDate": "1997-10-17 00:00:00.000",
+ "requiredDate": "1997-11-14 00:00:00.000",
+ "shippedDate": "1997-11-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 210.8,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10710,
+ "customerID": "FRANS",
+ "employeeID": 1,
+ "orderDate": "1997-10-20 00:00:00.000",
+ "requiredDate": "1997-11-17 00:00:00.000",
+ "shippedDate": "1997-10-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.98,
+ "shipName": "Franchi S.p.A.",
+ "shipAddress": {
+ "street": "Via Monte Bianco 34",
+ "city": "Torino",
+ "region": "NULL",
+ "postalCode": 10100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10711,
+ "customerID": "SAVEA",
+ "employeeID": 5,
+ "orderDate": "1997-10-21 00:00:00.000",
+ "requiredDate": "1997-12-02 00:00:00.000",
+ "shippedDate": "1997-10-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 52.41,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 120,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10712,
+ "customerID": "HUNGO",
+ "employeeID": 3,
+ "orderDate": "1997-10-21 00:00:00.000",
+ "requiredDate": "1997-11-18 00:00:00.000",
+ "shippedDate": "1997-10-31 00:00:00.000",
+ "shipVia": 1,
+ "freight": 89.93,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 3,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10713,
+ "customerID": "SAVEA",
+ "employeeID": 1,
+ "orderDate": "1997-10-22 00:00:00.000",
+ "requiredDate": "1997-11-19 00:00:00.000",
+ "shippedDate": "1997-10-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 167.05,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 110,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10707,
+ "customerID": "AROUT",
+ "employeeID": 4,
+ "orderDate": "1997-10-16 00:00:00.000",
+ "requiredDate": "1997-10-30 00:00:00.000",
+ "shippedDate": "1997-10-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 21.74,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 28,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10715,
+ "customerID": "BONAP",
+ "employeeID": 3,
+ "orderDate": "1997-10-23 00:00:00.000",
+ "requiredDate": "1997-11-06 00:00:00.000",
+ "shippedDate": "1997-10-29 00:00:00.000",
+ "shipVia": 1,
+ "freight": 63.2,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10706,
+ "customerID": "OLDWO",
+ "employeeID": 8,
+ "orderDate": "1997-10-16 00:00:00.000",
+ "requiredDate": "1997-11-13 00:00:00.000",
+ "shippedDate": "1997-10-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 135.63,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10705,
+ "customerID": "HILAA",
+ "employeeID": 9,
+ "orderDate": "1997-10-15 00:00:00.000",
+ "requiredDate": "1997-11-12 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.52,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10714,
+ "customerID": "SAVEA",
+ "employeeID": 5,
+ "orderDate": "1997-10-22 00:00:00.000",
+ "requiredDate": "1997-11-19 00:00:00.000",
+ "shippedDate": "1997-10-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 24.49,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 18,
+ "discount": 0.25
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 50,
+ "discount": 0.25
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 27,
+ "discount": 0.25
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10719,
+ "customerID": "LETSS",
+ "employeeID": 8,
+ "orderDate": "1997-10-27 00:00:00.000",
+ "requiredDate": "1997-11-24 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 51.44,
+ "shipName": "Let's Stop N Shop",
+ "shipAddress": {
+ "street": "87 Polk St. Suite 5",
+ "city": "San Francisco",
+ "region": "CA",
+ "postalCode": 94117,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 3,
+ "discount": 0.25
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 40,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10720,
+ "customerID": "QUEDE",
+ "employeeID": 8,
+ "orderDate": "1997-10-28 00:00:00.000",
+ "requiredDate": "1997-11-11 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 9.53,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10722,
+ "customerID": "SAVEA",
+ "employeeID": 8,
+ "orderDate": "1997-10-29 00:00:00.000",
+ "requiredDate": "1997-12-10 00:00:00.000",
+ "shippedDate": "1997-11-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 74.58,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 42,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10724,
+ "customerID": "MEREP",
+ "employeeID": 8,
+ "orderDate": "1997-10-30 00:00:00.000",
+ "requiredDate": "1997-12-11 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 57.75,
+ "shipName": "Mère Paillarde",
+ "shipAddress": {
+ "street": "43 rue St. Laurent",
+ "city": "Montréal",
+ "region": "Québec",
+ "postalCode": "H1J 1C3",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10716,
+ "customerID": "RANCH",
+ "employeeID": 4,
+ "orderDate": "1997-10-24 00:00:00.000",
+ "requiredDate": "1997-11-21 00:00:00.000",
+ "shippedDate": "1997-10-27 00:00:00.000",
+ "shipVia": 2,
+ "freight": 22.57,
+ "shipName": "Rancho grande",
+ "shipAddress": {
+ "street": "Av. del Libertador 900",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10726,
+ "customerID": "EASTC",
+ "employeeID": 4,
+ "orderDate": "1997-11-03 00:00:00.000",
+ "requiredDate": "1997-11-17 00:00:00.000",
+ "shippedDate": "1997-12-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 16.56,
+ "shipName": "Eastern Connection",
+ "shipAddress": {
+ "street": "35 King George",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX3 6FW",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10717,
+ "customerID": "FRANK",
+ "employeeID": 1,
+ "orderDate": "1997-10-24 00:00:00.000",
+ "requiredDate": "1997-11-21 00:00:00.000",
+ "shippedDate": "1997-10-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 59.25,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 32,
+ "discount": 0.05
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 25,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10727,
+ "customerID": "REGGC",
+ "employeeID": 2,
+ "orderDate": "1997-11-03 00:00:00.000",
+ "requiredDate": "1997-12-01 00:00:00.000",
+ "shippedDate": "1997-12-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 89.9,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10728,
+ "customerID": "QUEEN",
+ "employeeID": 4,
+ "orderDate": "1997-11-04 00:00:00.000",
+ "requiredDate": "1997-12-02 00:00:00.000",
+ "shippedDate": "1997-11-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.33,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10729,
+ "customerID": "LINOD",
+ "employeeID": 8,
+ "orderDate": "1997-11-04 00:00:00.000",
+ "requiredDate": "1997-12-16 00:00:00.000",
+ "shippedDate": "1997-11-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 141.06,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 50,
+ "unitPrice": 16.25,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10730,
+ "customerID": "BONAP",
+ "employeeID": 5,
+ "orderDate": "1997-11-05 00:00:00.000",
+ "requiredDate": "1997-12-03 00:00:00.000",
+ "shippedDate": "1997-11-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 20.12,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 3,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 10,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10718,
+ "customerID": "KOENE",
+ "employeeID": 1,
+ "orderDate": "1997-10-27 00:00:00.000",
+ "requiredDate": "1997-11-24 00:00:00.000",
+ "shippedDate": "1997-10-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 170.88,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 12,
+ "unitPrice": 38,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10725,
+ "customerID": "FAMIA",
+ "employeeID": 4,
+ "orderDate": "1997-10-31 00:00:00.000",
+ "requiredDate": "1997-11-28 00:00:00.000",
+ "shippedDate": "1997-11-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 10.83,
+ "shipName": "Familia Arquibaldo",
+ "shipAddress": {
+ "street": "Rua Orós 92",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05442-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10731,
+ "customerID": "CHOPS",
+ "employeeID": 7,
+ "orderDate": "1997-11-06 00:00:00.000",
+ "requiredDate": "1997-12-04 00:00:00.000",
+ "shippedDate": "1997-11-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 96.65,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0.05
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 30,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10735,
+ "customerID": "LETSS",
+ "employeeID": 6,
+ "orderDate": "1997-11-10 00:00:00.000",
+ "requiredDate": "1997-12-08 00:00:00.000",
+ "shippedDate": "1997-11-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 45.97,
+ "shipName": "Let's Stop N Shop",
+ "shipAddress": {
+ "street": "87 Polk St. Suite 5",
+ "city": "San Francisco",
+ "region": "CA",
+ "postalCode": 94117,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 2,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10736,
+ "customerID": "HUNGO",
+ "employeeID": 9,
+ "orderDate": "1997-11-11 00:00:00.000",
+ "requiredDate": "1997-12-09 00:00:00.000",
+ "shippedDate": "1997-11-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 44.1,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10737,
+ "customerID": "VINET",
+ "employeeID": 2,
+ "orderDate": "1997-11-11 00:00:00.000",
+ "requiredDate": "1997-12-09 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 7.79,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10739,
+ "customerID": "VINET",
+ "employeeID": 3,
+ "orderDate": "1997-11-12 00:00:00.000",
+ "requiredDate": "1997-12-10 00:00:00.000",
+ "shippedDate": "1997-11-17 00:00:00.000",
+ "shipVia": 3,
+ "freight": 11.08,
+ "shipName": "Vins et alcools Chevalier",
+ "shipAddress": {
+ "street": "59 rue de l'Abbaye",
+ "city": "Reims",
+ "region": "NULL",
+ "postalCode": 51100,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10740,
+ "customerID": "WHITC",
+ "employeeID": 4,
+ "orderDate": "1997-11-13 00:00:00.000",
+ "requiredDate": "1997-12-11 00:00:00.000",
+ "shippedDate": "1997-11-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 81.88,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 5,
+ "discount": 0.2
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 40,
+ "discount": 0.2
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 14,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10733,
+ "customerID": "BERGS",
+ "employeeID": 1,
+ "orderDate": "1997-11-07 00:00:00.000",
+ "requiredDate": "1997-12-05 00:00:00.000",
+ "shippedDate": "1997-11-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 110.11,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10742,
+ "customerID": "BOTTM",
+ "employeeID": 3,
+ "orderDate": "1997-11-14 00:00:00.000",
+ "requiredDate": "1997-12-12 00:00:00.000",
+ "shippedDate": "1997-11-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 243.73,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10734,
+ "customerID": "GOURL",
+ "employeeID": 2,
+ "orderDate": "1997-11-07 00:00:00.000",
+ "requiredDate": "1997-12-05 00:00:00.000",
+ "shippedDate": "1997-11-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.63,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10747,
+ "customerID": "PICCO",
+ "employeeID": 6,
+ "orderDate": "1997-11-19 00:00:00.000",
+ "requiredDate": "1997-12-17 00:00:00.000",
+ "shippedDate": "1997-11-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 117.33,
+ "shipName": "Piccolo und mehr",
+ "shipAddress": {
+ "street": "Geislweg 14",
+ "city": "Salzburg",
+ "region": "NULL",
+ "postalCode": 5020,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10748,
+ "customerID": "SAVEA",
+ "employeeID": 3,
+ "orderDate": "1997-11-20 00:00:00.000",
+ "requiredDate": "1997-12-18 00:00:00.000",
+ "shippedDate": "1997-11-28 00:00:00.000",
+ "shipVia": 1,
+ "freight": 232.55,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 44,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 28,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10749,
+ "customerID": "ISLAT",
+ "employeeID": 4,
+ "orderDate": "1997-11-20 00:00:00.000",
+ "requiredDate": "1997-12-18 00:00:00.000",
+ "shippedDate": "1997-12-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 61.53,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10750,
+ "customerID": "WARTH",
+ "employeeID": 9,
+ "orderDate": "1997-11-21 00:00:00.000",
+ "requiredDate": "1997-12-19 00:00:00.000",
+ "shippedDate": "1997-11-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 79.3,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 5,
+ "discount": 0.15
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 25,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10751,
+ "customerID": "RICSU",
+ "employeeID": 3,
+ "orderDate": "1997-11-24 00:00:00.000",
+ "requiredDate": "1997-12-22 00:00:00.000",
+ "shippedDate": "1997-12-03 00:00:00.000",
+ "shipVia": 3,
+ "freight": 130.79,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 12,
+ "discount": 0.1
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 50,
+ "unitPrice": 16.25,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 73,
+ "unitPrice": 15,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10752,
+ "customerID": "NORTS",
+ "employeeID": 2,
+ "orderDate": "1997-11-24 00:00:00.000",
+ "requiredDate": "1997-12-22 00:00:00.000",
+ "shippedDate": "1997-11-28 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.39,
+ "shipName": "North/South",
+ "shipAddress": {
+ "street": "South House 300 Queensbridge",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "SW7 1RZ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10753,
+ "customerID": "FRANS",
+ "employeeID": 3,
+ "orderDate": "1997-11-25 00:00:00.000",
+ "requiredDate": "1997-12-23 00:00:00.000",
+ "shippedDate": "1997-11-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 7.7,
+ "shipName": "Franchi S.p.A.",
+ "shipAddress": {
+ "street": "Via Monte Bianco 34",
+ "city": "Torino",
+ "region": "NULL",
+ "postalCode": 10100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 10,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10745,
+ "customerID": "QUICK",
+ "employeeID": 9,
+ "orderDate": "1997-11-18 00:00:00.000",
+ "requiredDate": "1997-12-16 00:00:00.000",
+ "shippedDate": "1997-11-27 00:00:00.000",
+ "shipVia": 1,
+ "freight": 3.52,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 45,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 7,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10755,
+ "customerID": "BONAP",
+ "employeeID": 4,
+ "orderDate": "1997-11-26 00:00:00.000",
+ "requiredDate": "1997-12-24 00:00:00.000",
+ "shippedDate": "1997-11-28 00:00:00.000",
+ "shipVia": 2,
+ "freight": 16.71,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 14,
+ "discount": 0.25
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 25,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10756,
+ "customerID": "SPLIR",
+ "employeeID": 8,
+ "orderDate": "1997-11-27 00:00:00.000",
+ "requiredDate": "1997-12-25 00:00:00.000",
+ "shippedDate": "1997-12-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 73.21,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 21,
+ "discount": 0.2
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 6,
+ "discount": 0.2
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 20,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10746,
+ "customerID": "CHOPS",
+ "employeeID": 1,
+ "orderDate": "1997-11-19 00:00:00.000",
+ "requiredDate": "1997-12-17 00:00:00.000",
+ "shippedDate": "1997-11-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 31.43,
+ "shipName": "Chop-suey Chinese",
+ "shipAddress": {
+ "street": "Hauptstr. 31",
+ "city": "Bern",
+ "region": "NULL",
+ "postalCode": 3012,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10757,
+ "customerID": "SAVEA",
+ "employeeID": 6,
+ "orderDate": "1997-11-27 00:00:00.000",
+ "requiredDate": "1997-12-25 00:00:00.000",
+ "shippedDate": "1997-12-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 8.19,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10761,
+ "customerID": "RATTC",
+ "employeeID": 5,
+ "orderDate": "1997-12-02 00:00:00.000",
+ "requiredDate": "1997-12-30 00:00:00.000",
+ "shippedDate": "1997-12-08 00:00:00.000",
+ "shipVia": 2,
+ "freight": 18.66,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 35,
+ "discount": 0.25
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10762,
+ "customerID": "FOLKO",
+ "employeeID": 3,
+ "orderDate": "1997-12-02 00:00:00.000",
+ "requiredDate": "1997-12-30 00:00:00.000",
+ "shippedDate": "1997-12-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 328.74,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10763,
+ "customerID": "FOLIG",
+ "employeeID": 3,
+ "orderDate": "1997-12-03 00:00:00.000",
+ "requiredDate": "1997-12-31 00:00:00.000",
+ "shippedDate": "1997-12-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 37.35,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10764,
+ "customerID": "ERNSH",
+ "employeeID": 6,
+ "orderDate": "1997-12-03 00:00:00.000",
+ "requiredDate": "1997-12-31 00:00:00.000",
+ "shippedDate": "1997-12-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 145.45,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 130,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10766,
+ "customerID": "OTTIK",
+ "employeeID": 4,
+ "orderDate": "1997-12-05 00:00:00.000",
+ "requiredDate": "1998-01-02 00:00:00.000",
+ "shippedDate": "1997-12-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 157.55,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10760,
+ "customerID": "MAISD",
+ "employeeID": 4,
+ "orderDate": "1997-12-01 00:00:00.000",
+ "requiredDate": "1997-12-29 00:00:00.000",
+ "shippedDate": "1997-12-10 00:00:00.000",
+ "shipVia": 1,
+ "freight": 155.64,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 12,
+ "discount": 0.25
+ },
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10768,
+ "customerID": "AROUT",
+ "employeeID": 3,
+ "orderDate": "1997-12-08 00:00:00.000",
+ "requiredDate": "1998-01-05 00:00:00.000",
+ "shippedDate": "1997-12-15 00:00:00.000",
+ "shipVia": 2,
+ "freight": 146.32,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10759,
+ "customerID": "ANATR",
+ "employeeID": 3,
+ "orderDate": "1997-11-28 00:00:00.000",
+ "requiredDate": "1997-12-26 00:00:00.000",
+ "shippedDate": "1997-12-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 11.99,
+ "shipName": "Ana Trujillo Emparedados y helados",
+ "shipAddress": {
+ "street": "Avda. de la Constitución 2222",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5021,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10769,
+ "customerID": "VAFFE",
+ "employeeID": 3,
+ "orderDate": "1997-12-08 00:00:00.000",
+ "requiredDate": "1998-01-05 00:00:00.000",
+ "shippedDate": "1997-12-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 65.06,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10772,
+ "customerID": "LEHMS",
+ "employeeID": 3,
+ "orderDate": "1997-12-10 00:00:00.000",
+ "requiredDate": "1998-01-07 00:00:00.000",
+ "shippedDate": "1997-12-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 91.28,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10758,
+ "customerID": "RICSU",
+ "employeeID": 3,
+ "orderDate": "1997-11-28 00:00:00.000",
+ "requiredDate": "1997-12-26 00:00:00.000",
+ "shippedDate": "1997-12-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 138.17,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 60,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10773,
+ "customerID": "ERNSH",
+ "employeeID": 1,
+ "orderDate": "1997-12-11 00:00:00.000",
+ "requiredDate": "1998-01-08 00:00:00.000",
+ "shippedDate": "1997-12-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 96.43,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 33,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 70,
+ "discount": 0.2
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 7,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10775,
+ "customerID": "THECR",
+ "employeeID": 7,
+ "orderDate": "1997-12-12 00:00:00.000",
+ "requiredDate": "1998-01-09 00:00:00.000",
+ "shippedDate": "1997-12-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 20.25,
+ "shipName": "The Cracker Box",
+ "shipAddress": {
+ "street": "55 Grizzly Peak Rd.",
+ "city": "Butte",
+ "region": "MT",
+ "postalCode": 59801,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10774,
+ "customerID": "FOLKO",
+ "employeeID": 4,
+ "orderDate": "1997-12-11 00:00:00.000",
+ "requiredDate": "1997-12-25 00:00:00.000",
+ "shippedDate": "1997-12-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 48.2,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 2,
+ "discount": 0.25
+ },
+ {
+ "productID": 66,
+ "unitPrice": 17,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10779,
+ "customerID": "MORGK",
+ "employeeID": 3,
+ "orderDate": "1997-12-16 00:00:00.000",
+ "requiredDate": "1998-01-13 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.13,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10780,
+ "customerID": "LILAS",
+ "employeeID": 2,
+ "orderDate": "1997-12-16 00:00:00.000",
+ "requiredDate": "1997-12-30 00:00:00.000",
+ "shippedDate": "1997-12-25 00:00:00.000",
+ "shipVia": 1,
+ "freight": 42.13,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10781,
+ "customerID": "WARTH",
+ "employeeID": 2,
+ "orderDate": "1997-12-17 00:00:00.000",
+ "requiredDate": "1998-01-14 00:00:00.000",
+ "shippedDate": "1997-12-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 73.16,
+ "shipName": "Wartian Herkku",
+ "shipAddress": {
+ "street": "Torikatu 38",
+ "city": "Oulu",
+ "region": "NULL",
+ "postalCode": 90110,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 3,
+ "discount": 0.2
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0.2
+ },
+ {
+ "productID": 74,
+ "unitPrice": 10,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10783,
+ "customerID": "HANAR",
+ "employeeID": 4,
+ "orderDate": "1997-12-18 00:00:00.000",
+ "requiredDate": "1998-01-15 00:00:00.000",
+ "shippedDate": "1997-12-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 124.98,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10784,
+ "customerID": "MAGAA",
+ "employeeID": 4,
+ "orderDate": "1997-12-18 00:00:00.000",
+ "requiredDate": "1998-01-15 00:00:00.000",
+ "shippedDate": "1997-12-22 00:00:00.000",
+ "shipVia": 3,
+ "freight": 70.09,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 2,
+ "discount": 0.15
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10785,
+ "customerID": "GROSR",
+ "employeeID": 1,
+ "orderDate": "1997-12-18 00:00:00.000",
+ "requiredDate": "1998-01-15 00:00:00.000",
+ "shippedDate": "1997-12-24 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.51,
+ "shipName": "GROSELLA-Restaurante",
+ "shipAddress": {
+ "street": "5ª Ave. Los Palos Grandes",
+ "city": "Caracas",
+ "region": "DF",
+ "postalCode": 1081,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10786,
+ "customerID": "QUEEN",
+ "employeeID": 8,
+ "orderDate": "1997-12-19 00:00:00.000",
+ "requiredDate": "1998-01-16 00:00:00.000",
+ "shippedDate": "1997-12-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 110.87,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 15,
+ "discount": 0.2
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 42,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10776,
+ "customerID": "ERNSH",
+ "employeeID": 1,
+ "orderDate": "1997-12-15 00:00:00.000",
+ "requiredDate": "1998-01-12 00:00:00.000",
+ "shippedDate": "1997-12-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 351.53,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 16,
+ "discount": 0.05
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 27,
+ "discount": 0.05
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 120,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10787,
+ "customerID": "LAMAI",
+ "employeeID": 2,
+ "orderDate": "1997-12-19 00:00:00.000",
+ "requiredDate": "1998-01-02 00:00:00.000",
+ "shippedDate": "1997-12-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 249.93,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10791,
+ "customerID": "FRANK",
+ "employeeID": 6,
+ "orderDate": "1997-12-23 00:00:00.000",
+ "requiredDate": "1998-01-20 00:00:00.000",
+ "shippedDate": "1998-01-01 00:00:00.000",
+ "shipVia": 2,
+ "freight": 16.85,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 14,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10792,
+ "customerID": "WOLZA",
+ "employeeID": 1,
+ "orderDate": "1997-12-23 00:00:00.000",
+ "requiredDate": "1998-01-20 00:00:00.000",
+ "shippedDate": "1997-12-31 00:00:00.000",
+ "shipVia": 3,
+ "freight": 23.79,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10793,
+ "customerID": "AROUT",
+ "employeeID": 3,
+ "orderDate": "1997-12-24 00:00:00.000",
+ "requiredDate": "1998-01-21 00:00:00.000",
+ "shippedDate": "1998-01-08 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.52,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10794,
+ "customerID": "QUEDE",
+ "employeeID": 6,
+ "orderDate": "1997-12-24 00:00:00.000",
+ "requiredDate": "1998-01-21 00:00:00.000",
+ "shippedDate": "1998-01-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 21.49,
+ "shipName": "Que Delícia",
+ "shipAddress": {
+ "street": "Rua da Panificadora 12",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-673",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 14,
+ "unitPrice": 23.25,
+ "quantity": 15,
+ "discount": 0.2
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 6,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10790,
+ "customerID": "GOURL",
+ "employeeID": 6,
+ "orderDate": "1997-12-22 00:00:00.000",
+ "requiredDate": "1998-01-19 00:00:00.000",
+ "shippedDate": "1997-12-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 28.23,
+ "shipName": "Gourmet Lanchonetes",
+ "shipAddress": {
+ "street": "Av. Brasil 442",
+ "city": "Campinas",
+ "region": "SP",
+ "postalCode": "04876-786",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 3,
+ "discount": 0.15
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10796,
+ "customerID": "HILAA",
+ "employeeID": 3,
+ "orderDate": "1997-12-25 00:00:00.000",
+ "requiredDate": "1998-01-22 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 26.52,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 21,
+ "discount": 0.2
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 35,
+ "discount": 0.2
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 24,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10788,
+ "customerID": "QUICK",
+ "employeeID": 1,
+ "orderDate": "1997-12-22 00:00:00.000",
+ "requiredDate": "1998-01-19 00:00:00.000",
+ "shippedDate": "1998-01-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 42.7,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 50,
+ "discount": 0.05
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10789,
+ "customerID": "FOLIG",
+ "employeeID": 1,
+ "orderDate": "1997-12-22 00:00:00.000",
+ "requiredDate": "1998-01-19 00:00:00.000",
+ "shippedDate": "1997-12-31 00:00:00.000",
+ "shipVia": 2,
+ "freight": 100.6,
+ "shipName": "Folies gourmandes",
+ "shipAddress": {
+ "street": "184 chaussée de Tournai",
+ "city": "Lille",
+ "region": "NULL",
+ "postalCode": 59000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10800,
+ "customerID": "SEVES",
+ "employeeID": 1,
+ "orderDate": "1997-12-26 00:00:00.000",
+ "requiredDate": "1998-01-23 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 137.44,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 50,
+ "discount": 0.1
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 10,
+ "discount": 0.1
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 7,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10801,
+ "customerID": "BOLID",
+ "employeeID": 4,
+ "orderDate": "1997-12-29 00:00:00.000",
+ "requiredDate": "1998-01-26 00:00:00.000",
+ "shippedDate": "1997-12-31 00:00:00.000",
+ "shipVia": 2,
+ "freight": 97.09,
+ "shipName": "Bólido Comidas preparadas",
+ "shipAddress": {
+ "street": "C/ Araquil 67",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28023,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 20,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10795,
+ "customerID": "ERNSH",
+ "employeeID": 8,
+ "orderDate": "1997-12-24 00:00:00.000",
+ "requiredDate": "1998-01-21 00:00:00.000",
+ "shippedDate": "1998-01-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 126.66,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 65,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10798,
+ "customerID": "ISLAT",
+ "employeeID": 2,
+ "orderDate": "1997-12-26 00:00:00.000",
+ "requiredDate": "1998-01-23 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.33,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10799,
+ "customerID": "KOENE",
+ "employeeID": 9,
+ "orderDate": "1997-12-26 00:00:00.000",
+ "requiredDate": "1998-02-06 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 30.76,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10805,
+ "customerID": "THEBI",
+ "employeeID": 2,
+ "orderDate": "1997-12-30 00:00:00.000",
+ "requiredDate": "1998-01-27 00:00:00.000",
+ "shippedDate": "1998-01-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 237.34,
+ "shipName": "The Big Cheese",
+ "shipAddress": {
+ "street": "89 Jefferson Way Suite 2",
+ "city": "Portland",
+ "region": "OR",
+ "postalCode": 97201,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10802,
+ "customerID": "SIMOB",
+ "employeeID": 4,
+ "orderDate": "1997-12-29 00:00:00.000",
+ "requiredDate": "1998-01-26 00:00:00.000",
+ "shippedDate": "1998-01-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 257.26,
+ "shipName": "Simons bistro",
+ "shipAddress": {
+ "street": "Vinbæltet 34",
+ "city": "Kobenhavn",
+ "region": "NULL",
+ "postalCode": 1734,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 25,
+ "discount": 0.25
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 60,
+ "discount": 0.25
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 5,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10803,
+ "customerID": "WELLI",
+ "employeeID": 4,
+ "orderDate": "1997-12-30 00:00:00.000",
+ "requiredDate": "1998-01-27 00:00:00.000",
+ "shippedDate": "1998-01-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 55.23,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 24,
+ "discount": 0.05
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 15,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10808,
+ "customerID": "OLDWO",
+ "employeeID": 2,
+ "orderDate": "1998-01-01 00:00:00.000",
+ "requiredDate": "1998-01-29 00:00:00.000",
+ "shippedDate": "1998-01-09 00:00:00.000",
+ "shipVia": 3,
+ "freight": 45.53,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 50,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10810,
+ "customerID": "LAUGB",
+ "employeeID": 2,
+ "orderDate": "1998-01-01 00:00:00.000",
+ "requiredDate": "1998-01-29 00:00:00.000",
+ "shippedDate": "1998-01-07 00:00:00.000",
+ "shipVia": 3,
+ "freight": 4.33,
+ "shipName": "Laughing Bacchus Wine Cellars",
+ "shipAddress": {
+ "street": "2319 Elm St.",
+ "city": "Vancouver",
+ "region": "BC",
+ "postalCode": "V3F 2K1",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10811,
+ "customerID": "LINOD",
+ "employeeID": 8,
+ "orderDate": "1998-01-02 00:00:00.000",
+ "requiredDate": "1998-01-30 00:00:00.000",
+ "shippedDate": "1998-01-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 31.22,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10804,
+ "customerID": "SEVES",
+ "employeeID": 6,
+ "orderDate": "1997-12-30 00:00:00.000",
+ "requiredDate": "1998-01-27 00:00:00.000",
+ "shippedDate": "1998-01-07 00:00:00.000",
+ "shipVia": 2,
+ "freight": 27.33,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 36,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 4,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10814,
+ "customerID": "VICTE",
+ "employeeID": 3,
+ "orderDate": "1998-01-05 00:00:00.000",
+ "requiredDate": "1998-02-02 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 3,
+ "freight": 130.94,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 48,
+ "unitPrice": 12.75,
+ "quantity": 8,
+ "discount": 0.15
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10812,
+ "customerID": "REGGC",
+ "employeeID": 5,
+ "orderDate": "1998-01-02 00:00:00.000",
+ "requiredDate": "1998-01-30 00:00:00.000",
+ "shippedDate": "1998-01-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 59.78,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 16,
+ "discount": 0.1
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10817,
+ "customerID": "KOENE",
+ "employeeID": 3,
+ "orderDate": "1998-01-06 00:00:00.000",
+ "requiredDate": "1998-01-20 00:00:00.000",
+ "shippedDate": "1998-01-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 306.07,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 40,
+ "discount": 0.15
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 60,
+ "discount": 0.15
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 25,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10806,
+ "customerID": "VICTE",
+ "employeeID": 3,
+ "orderDate": "1997-12-31 00:00:00.000",
+ "requiredDate": "1998-01-28 00:00:00.000",
+ "shippedDate": "1998-01-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 22.11,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 10,
+ "quantity": 15,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10816,
+ "customerID": "GREAL",
+ "employeeID": 4,
+ "orderDate": "1998-01-06 00:00:00.000",
+ "requiredDate": "1998-02-03 00:00:00.000",
+ "shippedDate": "1998-02-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 719.78,
+ "shipName": "Great Lakes Food Market",
+ "shipAddress": {
+ "street": "2732 Baker Blvd.",
+ "city": "Eugene",
+ "region": "OR",
+ "postalCode": 97403,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 30,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10813,
+ "customerID": "RICAR",
+ "employeeID": 1,
+ "orderDate": "1998-01-05 00:00:00.000",
+ "requiredDate": "1998-02-02 00:00:00.000",
+ "shippedDate": "1998-01-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 47.38,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10818,
+ "customerID": "MAGAA",
+ "employeeID": 7,
+ "orderDate": "1998-01-07 00:00:00.000",
+ "requiredDate": "1998-02-04 00:00:00.000",
+ "shippedDate": "1998-01-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 65.48,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10819,
+ "customerID": "CACTU",
+ "employeeID": 2,
+ "orderDate": "1998-01-07 00:00:00.000",
+ "requiredDate": "1998-02-04 00:00:00.000",
+ "shippedDate": "1998-01-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 19.76,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10821,
+ "customerID": "SPLIR",
+ "employeeID": 1,
+ "orderDate": "1998-01-08 00:00:00.000",
+ "requiredDate": "1998-02-05 00:00:00.000",
+ "shippedDate": "1998-01-15 00:00:00.000",
+ "shipVia": 1,
+ "freight": 36.68,
+ "shipName": "Split Rail Beer & Ale",
+ "shipAddress": {
+ "street": "P.O. Box 555",
+ "city": "Lander",
+ "region": "WY",
+ "postalCode": 82520,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10822,
+ "customerID": "TRAIH",
+ "employeeID": 6,
+ "orderDate": "1998-01-08 00:00:00.000",
+ "requiredDate": "1998-02-05 00:00:00.000",
+ "shippedDate": "1998-01-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 7,
+ "shipName": "Trail's Head Gourmet Provisioners",
+ "shipAddress": {
+ "street": "722 DaVinci Blvd.",
+ "city": "Kirkland",
+ "region": "WA",
+ "postalCode": 98034,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10823,
+ "customerID": "LILAS",
+ "employeeID": 5,
+ "orderDate": "1998-01-09 00:00:00.000",
+ "requiredDate": "1998-02-06 00:00:00.000",
+ "shippedDate": "1998-01-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 163.97,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 40,
+ "discount": 0.1
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10824,
+ "customerID": "FOLKO",
+ "employeeID": 8,
+ "orderDate": "1998-01-09 00:00:00.000",
+ "requiredDate": "1998-02-06 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.23,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10825,
+ "customerID": "DRACD",
+ "employeeID": 1,
+ "orderDate": "1998-01-09 00:00:00.000",
+ "requiredDate": "1998-02-06 00:00:00.000",
+ "shippedDate": "1998-01-14 00:00:00.000",
+ "shipVia": 1,
+ "freight": 79.25,
+ "shipName": "Drachenblut Delikatessen",
+ "shipAddress": {
+ "street": "Walserweg 21",
+ "city": "Aachen",
+ "region": "NULL",
+ "postalCode": 52066,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10826,
+ "customerID": "BLONP",
+ "employeeID": 6,
+ "orderDate": "1998-01-12 00:00:00.000",
+ "requiredDate": "1998-02-09 00:00:00.000",
+ "shippedDate": "1998-02-06 00:00:00.000",
+ "shipVia": 1,
+ "freight": 7.09,
+ "shipName": "Blondel père et fils",
+ "shipAddress": {
+ "street": "24 place Kléber",
+ "city": "Strasbourg",
+ "region": "NULL",
+ "postalCode": 67000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10827,
+ "customerID": "BONAP",
+ "employeeID": 1,
+ "orderDate": "1998-01-12 00:00:00.000",
+ "requiredDate": "1998-01-26 00:00:00.000",
+ "shippedDate": "1998-02-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 63.54,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10828,
+ "customerID": "RANCH",
+ "employeeID": 9,
+ "orderDate": "1998-01-13 00:00:00.000",
+ "requiredDate": "1998-01-27 00:00:00.000",
+ "shippedDate": "1998-02-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 90.85,
+ "shipName": "Rancho grande",
+ "shipAddress": {
+ "street": "Av. del Libertador 900",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10829,
+ "customerID": "ISLAT",
+ "employeeID": 9,
+ "orderDate": "1998-01-13 00:00:00.000",
+ "requiredDate": "1998-02-10 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 154.72,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10830,
+ "customerID": "TRADH",
+ "employeeID": 4,
+ "orderDate": "1998-01-13 00:00:00.000",
+ "requiredDate": "1998-02-24 00:00:00.000",
+ "shippedDate": "1998-01-21 00:00:00.000",
+ "shipVia": 2,
+ "freight": 81.83,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 28,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 24,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10831,
+ "customerID": "SANTG",
+ "employeeID": 3,
+ "orderDate": "1998-01-14 00:00:00.000",
+ "requiredDate": "1998-02-11 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 72.19,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 9,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10832,
+ "customerID": "LAMAI",
+ "employeeID": 2,
+ "orderDate": "1998-01-14 00:00:00.000",
+ "requiredDate": "1998-02-11 00:00:00.000",
+ "shippedDate": "1998-01-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 43.26,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 3,
+ "discount": 0.2
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 16,
+ "discount": 0.2
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10833,
+ "customerID": "OTTIK",
+ "employeeID": 6,
+ "orderDate": "1998-01-15 00:00:00.000",
+ "requiredDate": "1998-02-12 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 71.49,
+ "shipName": "Ottilies Käseladen",
+ "shipAddress": {
+ "street": "Mehrheimerstr. 369",
+ "city": "Köln",
+ "region": "NULL",
+ "postalCode": 50739,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 9,
+ "discount": 0.1
+ },
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 9,
+ "discount": 0.1
+ },
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 20,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10834,
+ "customerID": "TRADH",
+ "employeeID": 1,
+ "orderDate": "1998-01-15 00:00:00.000",
+ "requiredDate": "1998-02-12 00:00:00.000",
+ "shippedDate": "1998-01-19 00:00:00.000",
+ "shipVia": 3,
+ "freight": 29.78,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 8,
+ "discount": 0.05
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 20,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10838,
+ "customerID": "LINOD",
+ "employeeID": 3,
+ "orderDate": "1998-01-19 00:00:00.000",
+ "requiredDate": "1998-02-16 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 59.28,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 4,
+ "discount": 0.25
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 25,
+ "discount": 0.25
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 50,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10839,
+ "customerID": "TRADH",
+ "employeeID": 3,
+ "orderDate": "1998-01-19 00:00:00.000",
+ "requiredDate": "1998-02-16 00:00:00.000",
+ "shippedDate": "1998-01-22 00:00:00.000",
+ "shipVia": 3,
+ "freight": 35.43,
+ "shipName": "Tradiçao Hipermercados",
+ "shipAddress": {
+ "street": "Av. Inês de Castro 414",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05634-030",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 15,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10840,
+ "customerID": "LINOD",
+ "employeeID": 4,
+ "orderDate": "1998-01-19 00:00:00.000",
+ "requiredDate": "1998-03-02 00:00:00.000",
+ "shippedDate": "1998-02-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.71,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 6,
+ "discount": 0.2
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10841,
+ "customerID": "SUPRD",
+ "employeeID": 5,
+ "orderDate": "1998-01-20 00:00:00.000",
+ "requiredDate": "1998-02-17 00:00:00.000",
+ "shippedDate": "1998-01-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 424.3,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 16,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10842,
+ "customerID": "TORTU",
+ "employeeID": 1,
+ "orderDate": "1998-01-20 00:00:00.000",
+ "requiredDate": "1998-02-17 00:00:00.000",
+ "shippedDate": "1998-01-29 00:00:00.000",
+ "shipVia": 3,
+ "freight": 54.42,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 12,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10836,
+ "customerID": "ERNSH",
+ "employeeID": 7,
+ "orderDate": "1998-01-16 00:00:00.000",
+ "requiredDate": "1998-02-13 00:00:00.000",
+ "shippedDate": "1998-01-21 00:00:00.000",
+ "shipVia": 1,
+ "freight": 411.88,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 52,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10835,
+ "customerID": "ALFKI",
+ "employeeID": 1,
+ "orderDate": "1998-01-15 00:00:00.000",
+ "requiredDate": "1998-02-12 00:00:00.000",
+ "shippedDate": "1998-01-21 00:00:00.000",
+ "shipVia": 3,
+ "freight": 69.53,
+ "shipName": "Alfred's Futterkiste",
+ "shipAddress": {
+ "street": "Obere Str. 57",
+ "city": "Berlin",
+ "region": "NULL",
+ "postalCode": 12209,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 2,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10837,
+ "customerID": "BERGS",
+ "employeeID": 9,
+ "orderDate": "1998-01-16 00:00:00.000",
+ "requiredDate": "1998-02-13 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 13.32,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 40,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10845,
+ "customerID": "QUICK",
+ "employeeID": 8,
+ "orderDate": "1998-01-21 00:00:00.000",
+ "requiredDate": "1998-02-04 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 212.98,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 70,
+ "discount": 0.1
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 25,
+ "discount": 0.1
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 42,
+ "discount": 0.1
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 60,
+ "discount": 0.1
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 48,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10848,
+ "customerID": "CONSH",
+ "employeeID": 7,
+ "orderDate": "1998-01-23 00:00:00.000",
+ "requiredDate": "1998-02-20 00:00:00.000",
+ "shippedDate": "1998-01-29 00:00:00.000",
+ "shipVia": 2,
+ "freight": 38.24,
+ "shipName": "Consolidated Holdings",
+ "shipAddress": {
+ "street": "Berkeley Gardens 12 Brewery",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "WX1 6LT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 9,
+ "unitPrice": 97,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 5,
+ "unitPrice": 21.35,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10850,
+ "customerID": "VICTE",
+ "employeeID": 1,
+ "orderDate": "1998-01-23 00:00:00.000",
+ "requiredDate": "1998-03-06 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 49.19,
+ "shipName": "Victuailles en stock",
+ "shipAddress": {
+ "street": "2 rue du Commerce",
+ "city": "Lyon",
+ "region": "NULL",
+ "postalCode": 69004,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 4,
+ "discount": 0.15
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10847,
+ "customerID": "SAVEA",
+ "employeeID": 4,
+ "orderDate": "1998-01-22 00:00:00.000",
+ "requiredDate": "1998-02-05 00:00:00.000",
+ "shippedDate": "1998-02-10 00:00:00.000",
+ "shipVia": 3,
+ "freight": 487.57,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 80,
+ "discount": 0.2
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 12,
+ "discount": 0.2
+ },
+ {
+ "productID": 37,
+ "unitPrice": 26,
+ "quantity": 60,
+ "discount": 0.2
+ },
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 36,
+ "discount": 0.2
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 45,
+ "discount": 0.2
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 55,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10846,
+ "customerID": "SUPRD",
+ "employeeID": 2,
+ "orderDate": "1998-01-22 00:00:00.000",
+ "requiredDate": "1998-03-05 00:00:00.000",
+ "shippedDate": "1998-01-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 56.46,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 74,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10849,
+ "customerID": "KOENE",
+ "employeeID": 9,
+ "orderDate": "1998-01-23 00:00:00.000",
+ "requiredDate": "1998-02-20 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 2,
+ "freight": 0.56,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 49,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 18,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10851,
+ "customerID": "RICAR",
+ "employeeID": 5,
+ "orderDate": "1998-01-26 00:00:00.000",
+ "requiredDate": "1998-02-23 00:00:00.000",
+ "shippedDate": "1998-02-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 160.55,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 59,
+ "unitPrice": 55,
+ "quantity": 42,
+ "discount": 0.05
+ },
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 5,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10852,
+ "customerID": "RATTC",
+ "employeeID": 8,
+ "orderDate": "1998-01-26 00:00:00.000",
+ "requiredDate": "1998-02-09 00:00:00.000",
+ "shippedDate": "1998-01-30 00:00:00.000",
+ "shipVia": 1,
+ "freight": 174.05,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10854,
+ "customerID": "ERNSH",
+ "employeeID": 3,
+ "orderDate": "1998-01-27 00:00:00.000",
+ "requiredDate": "1998-02-24 00:00:00.000",
+ "shippedDate": "1998-02-05 00:00:00.000",
+ "shipVia": 2,
+ "freight": 100.22,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 100,
+ "discount": 0.15
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 65,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10855,
+ "customerID": "OLDWO",
+ "employeeID": 3,
+ "orderDate": "1998-01-27 00:00:00.000",
+ "requiredDate": "1998-02-24 00:00:00.000",
+ "shippedDate": "1998-02-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 170.97,
+ "shipName": "Old World Delicatessen",
+ "shipAddress": {
+ "street": "2743 Bering St.",
+ "city": "Anchorage",
+ "region": "AK",
+ "postalCode": 99508,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 14,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 15,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10856,
+ "customerID": "ANTON",
+ "employeeID": 3,
+ "orderDate": "1998-01-28 00:00:00.000",
+ "requiredDate": "1998-02-25 00:00:00.000",
+ "shippedDate": "1998-02-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 58.43,
+ "shipName": "Antonio Moreno Taquería",
+ "shipAddress": {
+ "street": "Mataderos 2312",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5023,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10857,
+ "customerID": "BERGS",
+ "employeeID": 8,
+ "orderDate": "1998-01-28 00:00:00.000",
+ "requiredDate": "1998-02-25 00:00:00.000",
+ "shippedDate": "1998-02-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 188.85,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 3,
+ "unitPrice": 10,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 35,
+ "discount": 0.25
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 10,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10858,
+ "customerID": "LACOR",
+ "employeeID": 2,
+ "orderDate": "1998-01-29 00:00:00.000",
+ "requiredDate": "1998-02-26 00:00:00.000",
+ "shippedDate": "1998-02-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 52.51,
+ "shipName": "La corne d'abondance",
+ "shipAddress": {
+ "street": "67 avenue de l'Europe",
+ "city": "Versailles",
+ "region": "NULL",
+ "postalCode": 78000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 4,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10859,
+ "customerID": "FRANK",
+ "employeeID": 1,
+ "orderDate": "1998-01-29 00:00:00.000",
+ "requiredDate": "1998-02-26 00:00:00.000",
+ "shippedDate": "1998-02-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 76.1,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 35,
+ "discount": 0.25
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 30,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10860,
+ "customerID": "FRANR",
+ "employeeID": 3,
+ "orderDate": "1998-01-29 00:00:00.000",
+ "requiredDate": "1998-02-26 00:00:00.000",
+ "shippedDate": "1998-02-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 19.26,
+ "shipName": "France restauration",
+ "shipAddress": {
+ "street": "54 rue Royale",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10861,
+ "customerID": "WHITC",
+ "employeeID": 4,
+ "orderDate": "1998-01-30 00:00:00.000",
+ "requiredDate": "1998-02-27 00:00:00.000",
+ "shippedDate": "1998-02-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 14.93,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 42,
+ "discount": 0
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10862,
+ "customerID": "LEHMS",
+ "employeeID": 8,
+ "orderDate": "1998-01-30 00:00:00.000",
+ "requiredDate": "1998-03-13 00:00:00.000",
+ "shippedDate": "1998-02-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 53.23,
+ "shipName": "Lehmanns Marktstand",
+ "shipAddress": {
+ "street": "Magazinweg 7",
+ "city": "Frankfurt a.M.",
+ "region": "NULL",
+ "postalCode": 60528,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 8,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10863,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1998-02-02 00:00:00.000",
+ "requiredDate": "1998-03-02 00:00:00.000",
+ "shippedDate": "1998-02-17 00:00:00.000",
+ "shipVia": 2,
+ "freight": 30.26,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 12,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10864,
+ "customerID": "AROUT",
+ "employeeID": 4,
+ "orderDate": "1998-02-02 00:00:00.000",
+ "requiredDate": "1998-03-02 00:00:00.000",
+ "shippedDate": "1998-02-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.04,
+ "shipName": "Around the Horn",
+ "shipAddress": {
+ "street": "Brook Farm Stratford St. Mary",
+ "city": "Colchester",
+ "region": "Essex",
+ "postalCode": "CO7 6JX",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 4,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10865,
+ "customerID": "QUICK",
+ "employeeID": 2,
+ "orderDate": "1998-02-02 00:00:00.000",
+ "requiredDate": "1998-02-16 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 348.14,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 60,
+ "discount": 0.05
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 80,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10869,
+ "customerID": "SEVES",
+ "employeeID": 5,
+ "orderDate": "1998-02-04 00:00:00.000",
+ "requiredDate": "1998-03-04 00:00:00.000",
+ "shippedDate": "1998-02-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 143.28,
+ "shipName": "Seven Seas Imports",
+ "shipAddress": {
+ "street": "90 Wadhurst Rd.",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "OX15 4NB",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 50,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10870,
+ "customerID": "WOLZA",
+ "employeeID": 5,
+ "orderDate": "1998-02-04 00:00:00.000",
+ "requiredDate": "1998-03-04 00:00:00.000",
+ "shippedDate": "1998-02-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 12.04,
+ "shipName": "Wolski Zajazd",
+ "shipAddress": {
+ "street": "ul. Filtrowa 68",
+ "city": "Warszawa",
+ "region": "NULL",
+ "postalCode": "01-012",
+ "country": "Poland"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 3,
+ "discount": 0
+ },
+ {
+ "productID": 51,
+ "unitPrice": 53,
+ "quantity": 2,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10871,
+ "customerID": "BONAP",
+ "employeeID": 9,
+ "orderDate": "1998-02-05 00:00:00.000",
+ "requiredDate": "1998-03-05 00:00:00.000",
+ "shippedDate": "1998-02-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 112.27,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 6,
+ "unitPrice": 25,
+ "quantity": 50,
+ "discount": 0.05
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 16,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10872,
+ "customerID": "GODOS",
+ "employeeID": 5,
+ "orderDate": "1998-02-05 00:00:00.000",
+ "requiredDate": "1998-03-05 00:00:00.000",
+ "shippedDate": "1998-02-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 175.32,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 10,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 21,
+ "discount": 0.05
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 15,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10873,
+ "customerID": "WILMK",
+ "employeeID": 4,
+ "orderDate": "1998-02-06 00:00:00.000",
+ "requiredDate": "1998-03-06 00:00:00.000",
+ "shippedDate": "1998-02-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 0.82,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 3,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10866,
+ "customerID": "BERGS",
+ "employeeID": 5,
+ "orderDate": "1998-02-03 00:00:00.000",
+ "requiredDate": "1998-03-03 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 109.11,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 21,
+ "discount": 0.25
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 6,
+ "discount": 0.25
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 40,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10876,
+ "customerID": "BONAP",
+ "employeeID": 7,
+ "orderDate": "1998-02-09 00:00:00.000",
+ "requiredDate": "1998-03-09 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 60.42,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 64,
+ "unitPrice": 33.25,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10877,
+ "customerID": "RICAR",
+ "employeeID": 1,
+ "orderDate": "1998-02-09 00:00:00.000",
+ "requiredDate": "1998-03-09 00:00:00.000",
+ "shippedDate": "1998-02-19 00:00:00.000",
+ "shipVia": 1,
+ "freight": 38.06,
+ "shipName": "Ricardo Adocicados",
+ "shipAddress": {
+ "street": "Av. Copacabana 267",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "02389-890",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10868,
+ "customerID": "QUEEN",
+ "employeeID": 7,
+ "orderDate": "1998-02-04 00:00:00.000",
+ "requiredDate": "1998-03-04 00:00:00.000",
+ "shippedDate": "1998-02-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 191.27,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 26,
+ "unitPrice": 31.23,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 42,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10875,
+ "customerID": "BERGS",
+ "employeeID": 4,
+ "orderDate": "1998-02-06 00:00:00.000",
+ "requiredDate": "1998-03-06 00:00:00.000",
+ "shippedDate": "1998-03-03 00:00:00.000",
+ "shipVia": 2,
+ "freight": 32.37,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 21,
+ "discount": 0.1
+ }
+ ]
+ },
+ {
+ "orderID": 10882,
+ "customerID": "SAVEA",
+ "employeeID": 4,
+ "orderDate": "1998-02-11 00:00:00.000",
+ "requiredDate": "1998-03-11 00:00:00.000",
+ "shippedDate": "1998-02-20 00:00:00.000",
+ "shipVia": 3,
+ "freight": 23.1,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 20,
+ "discount": 0.15
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 32,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10884,
+ "customerID": "LETSS",
+ "employeeID": 4,
+ "orderDate": "1998-02-12 00:00:00.000",
+ "requiredDate": "1998-03-12 00:00:00.000",
+ "shippedDate": "1998-02-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 90.97,
+ "shipName": "Let's Stop N Shop",
+ "shipAddress": {
+ "street": "87 Polk St. Suite 5",
+ "city": "San Francisco",
+ "region": "CA",
+ "postalCode": 94117,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 21,
+ "discount": 0.05
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 12,
+ "discount": 0.05
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 40,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10885,
+ "customerID": "SUPRD",
+ "employeeID": 6,
+ "orderDate": "1998-02-12 00:00:00.000",
+ "requiredDate": "1998-03-12 00:00:00.000",
+ "shippedDate": "1998-02-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 5.64,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 25,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10886,
+ "customerID": "HANAR",
+ "employeeID": 1,
+ "orderDate": "1998-02-13 00:00:00.000",
+ "requiredDate": "1998-03-13 00:00:00.000",
+ "shippedDate": "1998-03-02 00:00:00.000",
+ "shipVia": 1,
+ "freight": 4.99,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 70,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10880,
+ "customerID": "FOLKO",
+ "employeeID": 7,
+ "orderDate": "1998-02-10 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-02-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 88.01,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 70,
+ "unitPrice": 15,
+ "quantity": 50,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10879,
+ "customerID": "WILMK",
+ "employeeID": 3,
+ "orderDate": "1998-02-10 00:00:00.000",
+ "requiredDate": "1998-03-10 00:00:00.000",
+ "shippedDate": "1998-02-12 00:00:00.000",
+ "shipVia": 3,
+ "freight": 8.5,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10889,
+ "customerID": "RATTC",
+ "employeeID": 9,
+ "orderDate": "1998-02-16 00:00:00.000",
+ "requiredDate": "1998-03-16 00:00:00.000",
+ "shippedDate": "1998-02-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 280.61,
+ "shipName": "Rattlesnake Canyon Grocery",
+ "shipAddress": {
+ "street": "2817 Milton Dr.",
+ "city": "Albuquerque",
+ "region": "NM",
+ "postalCode": 87110,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 38,
+ "unitPrice": 263.5,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10890,
+ "customerID": "DUMON",
+ "employeeID": 7,
+ "orderDate": "1998-02-16 00:00:00.000",
+ "requiredDate": "1998-03-16 00:00:00.000",
+ "shippedDate": "1998-02-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 32.76,
+ "shipName": "Du monde entier",
+ "shipAddress": {
+ "street": "67 rue des Cinquante Otages",
+ "city": "Nantes",
+ "region": "NULL",
+ "postalCode": 44000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 14,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10893,
+ "customerID": "KOENE",
+ "employeeID": 9,
+ "orderDate": "1998-02-18 00:00:00.000",
+ "requiredDate": "1998-03-18 00:00:00.000",
+ "shippedDate": "1998-02-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 77.78,
+ "shipName": "Königlich Essen",
+ "shipAddress": {
+ "street": "Maubelstr. 90",
+ "city": "Brandenburg",
+ "region": "NULL",
+ "postalCode": 14776,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 8,
+ "unitPrice": 40,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 35,
+ "discount": 0
+ },
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10894,
+ "customerID": "SAVEA",
+ "employeeID": 1,
+ "orderDate": "1998-02-18 00:00:00.000",
+ "requiredDate": "1998-03-18 00:00:00.000",
+ "shippedDate": "1998-02-20 00:00:00.000",
+ "shipVia": 1,
+ "freight": 116.13,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 28,
+ "discount": 0.05
+ },
+ {
+ "productID": 69,
+ "unitPrice": 36,
+ "quantity": 50,
+ "discount": 0.05
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 120,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10888,
+ "customerID": "GODOS",
+ "employeeID": 1,
+ "orderDate": "1998-02-16 00:00:00.000",
+ "requiredDate": "1998-03-16 00:00:00.000",
+ "shippedDate": "1998-02-23 00:00:00.000",
+ "shipVia": 2,
+ "freight": 51.87,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 18,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10898,
+ "customerID": "OCEAN",
+ "employeeID": 4,
+ "orderDate": "1998-02-20 00:00:00.000",
+ "requiredDate": "1998-03-20 00:00:00.000",
+ "shippedDate": "1998-03-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 1.27,
+ "shipName": "Océano Atlántico Ltda.",
+ "shipAddress": {
+ "street": "Ing. Gustavo Moncada 8585 Piso 20-A",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10899,
+ "customerID": "LILAS",
+ "employeeID": 5,
+ "orderDate": "1998-02-20 00:00:00.000",
+ "requiredDate": "1998-03-20 00:00:00.000",
+ "shippedDate": "1998-02-26 00:00:00.000",
+ "shipVia": 3,
+ "freight": 1.21,
+ "shipName": "LILA-Supermercado",
+ "shipAddress": {
+ "street": "Carrera 52 con Ave. Bolívar #65-98 Llano Largo",
+ "city": "Barquisimeto",
+ "region": "Lara",
+ "postalCode": 3508,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 8,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10901,
+ "customerID": "HILAA",
+ "employeeID": 4,
+ "orderDate": "1998-02-23 00:00:00.000",
+ "requiredDate": "1998-03-23 00:00:00.000",
+ "shippedDate": "1998-02-26 00:00:00.000",
+ "shipVia": 1,
+ "freight": 62.09,
+ "shipName": "HILARION-Abastos",
+ "shipAddress": {
+ "street": "Carrera 22 con Ave. Carlos Soublette #8-35",
+ "city": "San Cristóbal",
+ "region": "Táchira",
+ "postalCode": 5022,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10902,
+ "customerID": "FOLKO",
+ "employeeID": 1,
+ "orderDate": "1998-02-23 00:00:00.000",
+ "requiredDate": "1998-03-23 00:00:00.000",
+ "shippedDate": "1998-03-03 00:00:00.000",
+ "shipVia": 1,
+ "freight": 44.15,
+ "shipName": "Folk och fä HB",
+ "shipAddress": {
+ "street": "Åkergatan 24",
+ "city": "Bräcke",
+ "region": "NULL",
+ "postalCode": "S-844 67",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 30,
+ "discount": 0.15
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 6,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10903,
+ "customerID": "HANAR",
+ "employeeID": 3,
+ "orderDate": "1998-02-24 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 36.71,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 40,
+ "discount": 0
+ },
+ {
+ "productID": 65,
+ "unitPrice": 21.05,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10896,
+ "customerID": "MAISD",
+ "employeeID": 7,
+ "orderDate": "1998-02-19 00:00:00.000",
+ "requiredDate": "1998-03-19 00:00:00.000",
+ "shippedDate": "1998-02-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 32.45,
+ "shipName": "Maison Dewey",
+ "shipAddress": {
+ "street": "Rue Joseph-Bens 532",
+ "city": "Bruxelles",
+ "region": "NULL",
+ "postalCode": "B-1180",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 45,
+ "unitPrice": 9.5,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10904,
+ "customerID": "WHITC",
+ "employeeID": 3,
+ "orderDate": "1998-02-24 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-02-27 00:00:00.000",
+ "shipVia": 3,
+ "freight": 162.95,
+ "shipName": "White Clover Markets",
+ "shipAddress": {
+ "street": "1029 - 12th Ave. S.",
+ "city": "Seattle",
+ "region": "WA",
+ "postalCode": 98124,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10895,
+ "customerID": "ERNSH",
+ "employeeID": 3,
+ "orderDate": "1998-02-18 00:00:00.000",
+ "requiredDate": "1998-03-18 00:00:00.000",
+ "shippedDate": "1998-02-23 00:00:00.000",
+ "shipVia": 1,
+ "freight": 162.75,
+ "shipName": "Ernst Handel",
+ "shipAddress": {
+ "street": "Kirchgasse 6",
+ "city": "Graz",
+ "region": "NULL",
+ "postalCode": 8010,
+ "country": "Austria"
+ },
+ "details": [
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 91,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 100,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 110,
+ "discount": 0
+ },
+ {
+ "productID": 39,
+ "unitPrice": 18,
+ "quantity": 45,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10897,
+ "customerID": "HUNGO",
+ "employeeID": 3,
+ "orderDate": "1998-02-19 00:00:00.000",
+ "requiredDate": "1998-03-19 00:00:00.000",
+ "shippedDate": "1998-02-25 00:00:00.000",
+ "shipVia": 2,
+ "freight": 603.54,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 80,
+ "discount": 0
+ },
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 36,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10909,
+ "customerID": "SANTG",
+ "employeeID": 1,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-10 00:00:00.000",
+ "shipVia": 2,
+ "freight": 53.05,
+ "shipName": "Santé Gourmet",
+ "shipAddress": {
+ "street": "Erling Skakkes gate 78",
+ "city": "Stavern",
+ "region": "NULL",
+ "postalCode": 4110,
+ "country": "Norway"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 41,
+ "unitPrice": 9.65,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10910,
+ "customerID": "WILMK",
+ "employeeID": 1,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 3,
+ "freight": 38.11,
+ "shipName": "Wilman Kala",
+ "shipAddress": {
+ "street": "Keskuskatu 45",
+ "city": "Helsinki",
+ "region": "NULL",
+ "postalCode": 21240,
+ "country": "Finland"
+ },
+ "details": [
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 49,
+ "unitPrice": 20,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10911,
+ "customerID": "GODOS",
+ "employeeID": 3,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-05 00:00:00.000",
+ "shipVia": 1,
+ "freight": 38.19,
+ "shipName": "Godos Cocina Típica",
+ "shipAddress": {
+ "street": "C/ Romero 33",
+ "city": "Sevilla",
+ "region": "NULL",
+ "postalCode": 41101,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 12,
+ "discount": 0
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10912,
+ "customerID": "HUNGO",
+ "employeeID": 2,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 2,
+ "freight": 580.91,
+ "shipName": "Hungry Owl All-Night Grocers",
+ "shipAddress": {
+ "street": "8 Johnstown Road",
+ "city": "Cork",
+ "region": "Co. Cork",
+ "postalCode": "NULL",
+ "country": "Ireland"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 29,
+ "unitPrice": 123.79,
+ "quantity": 60,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10913,
+ "customerID": "QUEEN",
+ "employeeID": 4,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 1,
+ "freight": 33.05,
+ "shipName": "Queen Cozinha",
+ "shipAddress": {
+ "street": "Alameda dos Canàrios 891",
+ "city": "Sao Paulo",
+ "region": "SP",
+ "postalCode": "05487-020",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 4,
+ "unitPrice": 22,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 40,
+ "discount": 0.25
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10917,
+ "customerID": "ROMEY",
+ "employeeID": 4,
+ "orderDate": "1998-03-02 00:00:00.000",
+ "requiredDate": "1998-03-30 00:00:00.000",
+ "shippedDate": "1998-03-11 00:00:00.000",
+ "shipVia": 2,
+ "freight": 8.29,
+ "shipName": "Romero y tomillo",
+ "shipAddress": {
+ "street": "Gran Vía 1",
+ "city": "Madrid",
+ "region": "NULL",
+ "postalCode": 28001,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 30,
+ "unitPrice": 25.89,
+ "quantity": 1,
+ "discount": 0
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10916,
+ "customerID": "RANCH",
+ "employeeID": 1,
+ "orderDate": "1998-02-27 00:00:00.000",
+ "requiredDate": "1998-03-27 00:00:00.000",
+ "shippedDate": "1998-03-09 00:00:00.000",
+ "shipVia": 2,
+ "freight": 63.77,
+ "shipName": "Rancho grande",
+ "shipAddress": {
+ "street": "Av. del Libertador 900",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 32,
+ "unitPrice": 32,
+ "quantity": 6,
+ "discount": 0
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10918,
+ "customerID": "BOTTM",
+ "employeeID": 3,
+ "orderDate": "1998-03-02 00:00:00.000",
+ "requiredDate": "1998-03-30 00:00:00.000",
+ "shippedDate": "1998-03-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 48.83,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 60,
+ "discount": 0.25
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 25,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10919,
+ "customerID": "LINOD",
+ "employeeID": 2,
+ "orderDate": "1998-03-02 00:00:00.000",
+ "requiredDate": "1998-03-30 00:00:00.000",
+ "shippedDate": "1998-03-04 00:00:00.000",
+ "shipVia": 2,
+ "freight": 19.8,
+ "shipName": "LINO-Delicateses",
+ "shipAddress": {
+ "street": "Ave. 5 de Mayo Porlamar",
+ "city": "I. de Margarita",
+ "region": "Nueva Esparta",
+ "postalCode": 4980,
+ "country": "Venezuela"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 25,
+ "unitPrice": 14,
+ "quantity": 24,
+ "discount": 0
+ },
+ {
+ "productID": 40,
+ "unitPrice": 18.4,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10908,
+ "customerID": "REGGC",
+ "employeeID": 4,
+ "orderDate": "1998-02-26 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-06 00:00:00.000",
+ "shipVia": 2,
+ "freight": 32.96,
+ "shipName": "Reggiani Caseifici",
+ "shipAddress": {
+ "street": "Strada Provinciale 124",
+ "city": "Reggio Emilia",
+ "region": "NULL",
+ "postalCode": 42100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 20,
+ "discount": 0.05
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 14,
+ "discount": 0.05
+ }
+ ]
+ },
+ {
+ "orderID": 10921,
+ "customerID": "VAFFE",
+ "employeeID": 1,
+ "orderDate": "1998-03-03 00:00:00.000",
+ "requiredDate": "1998-04-14 00:00:00.000",
+ "shippedDate": "1998-03-09 00:00:00.000",
+ "shipVia": 1,
+ "freight": 176.48,
+ "shipName": "Vaffeljernet",
+ "shipAddress": {
+ "street": "Smagsloget 45",
+ "city": "Århus",
+ "region": "NULL",
+ "postalCode": 8200,
+ "country": "Denmark"
+ },
+ "details": [
+ {
+ "productID": 35,
+ "unitPrice": 18,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 63,
+ "unitPrice": 43.9,
+ "quantity": 40,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10915,
+ "customerID": "TORTU",
+ "employeeID": 2,
+ "orderDate": "1998-02-27 00:00:00.000",
+ "requiredDate": "1998-03-27 00:00:00.000",
+ "shippedDate": "1998-03-02 00:00:00.000",
+ "shipVia": 2,
+ "freight": 3.51,
+ "shipName": "Tortuga Restaurante",
+ "shipAddress": {
+ "street": "Avda. Azteca 123",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5033,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 33,
+ "unitPrice": 2.5,
+ "quantity": 30,
+ "discount": 0
+ },
+ {
+ "productID": 54,
+ "unitPrice": 7.45,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10925,
+ "customerID": "HANAR",
+ "employeeID": 3,
+ "orderDate": "1998-03-04 00:00:00.000",
+ "requiredDate": "1998-04-01 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 1,
+ "freight": 2.27,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 36,
+ "unitPrice": 19,
+ "quantity": 25,
+ "discount": 0.15
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 12,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10926,
+ "customerID": "ANATR",
+ "employeeID": 4,
+ "orderDate": "1998-03-04 00:00:00.000",
+ "requiredDate": "1998-04-01 00:00:00.000",
+ "shippedDate": "1998-03-11 00:00:00.000",
+ "shipVia": 3,
+ "freight": 39.92,
+ "shipName": "Ana Trujillo Emparedados y helados",
+ "shipAddress": {
+ "street": "Avda. de la Constitución 2222",
+ "city": "México D.F.",
+ "region": "NULL",
+ "postalCode": 5021,
+ "country": "Mexico"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 10,
+ "discount": 0
+ },
+ {
+ "productID": 19,
+ "unitPrice": 9.2,
+ "quantity": 7,
+ "discount": 0
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10927,
+ "customerID": "LACOR",
+ "employeeID": 4,
+ "orderDate": "1998-03-05 00:00:00.000",
+ "requiredDate": "1998-04-02 00:00:00.000",
+ "shippedDate": "1998-04-08 00:00:00.000",
+ "shipVia": 1,
+ "freight": 19.79,
+ "shipName": "La corne d'abondance",
+ "shipAddress": {
+ "street": "67 avenue de l'Europe",
+ "city": "Versailles",
+ "region": "NULL",
+ "postalCode": 78000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 20,
+ "unitPrice": 81,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 52,
+ "unitPrice": 7,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10928,
+ "customerID": "GALED",
+ "employeeID": 1,
+ "orderDate": "1998-03-05 00:00:00.000",
+ "requiredDate": "1998-04-02 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 1.36,
+ "shipName": "Galería del gastronómo",
+ "shipAddress": {
+ "street": "Rambla de Cataluña 23",
+ "city": "Barcelona",
+ "region": "NULL",
+ "postalCode": 8022,
+ "country": "Spain"
+ },
+ "details": [
+ {
+ "productID": 47,
+ "unitPrice": 9.5,
+ "quantity": 5,
+ "discount": 0
+ },
+ {
+ "productID": 76,
+ "unitPrice": 18,
+ "quantity": 5,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10929,
+ "customerID": "FRANK",
+ "employeeID": 6,
+ "orderDate": "1998-03-05 00:00:00.000",
+ "requiredDate": "1998-04-02 00:00:00.000",
+ "shippedDate": "1998-03-12 00:00:00.000",
+ "shipVia": 1,
+ "freight": 33.93,
+ "shipName": "Frankenversand",
+ "shipAddress": {
+ "street": "Berliner Platz 43",
+ "city": "München",
+ "region": "NULL",
+ "postalCode": 80805,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 60,
+ "discount": 0
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 49,
+ "discount": 0
+ },
+ {
+ "productID": 77,
+ "unitPrice": 13,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10930,
+ "customerID": "SUPRD",
+ "employeeID": 4,
+ "orderDate": "1998-03-06 00:00:00.000",
+ "requiredDate": "1998-04-17 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 15.55,
+ "shipName": "Suprêmes délices",
+ "shipAddress": {
+ "street": "Boulevard Tirou 255",
+ "city": "Charleroi",
+ "region": "NULL",
+ "postalCode": "B-6000",
+ "country": "Belgium"
+ },
+ "details": [
+ {
+ "productID": 27,
+ "unitPrice": 43.9,
+ "quantity": 25,
+ "discount": 0
+ },
+ {
+ "productID": 55,
+ "unitPrice": 24,
+ "quantity": 25,
+ "discount": 0.2
+ },
+ {
+ "productID": 58,
+ "unitPrice": 13.25,
+ "quantity": 30,
+ "discount": 0.2
+ },
+ {
+ "productID": 21,
+ "unitPrice": 10,
+ "quantity": 36,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10931,
+ "customerID": "RICSU",
+ "employeeID": 4,
+ "orderDate": "1998-03-06 00:00:00.000",
+ "requiredDate": "1998-03-20 00:00:00.000",
+ "shippedDate": "1998-03-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 13.6,
+ "shipName": "Richter Supermarkt",
+ "shipAddress": {
+ "street": "Starenweg 5",
+ "city": "Genève",
+ "region": "NULL",
+ "postalCode": 1204,
+ "country": "Switzerland"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 42,
+ "discount": 0.15
+ },
+ {
+ "productID": 57,
+ "unitPrice": 19.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10932,
+ "customerID": "BONAP",
+ "employeeID": 8,
+ "orderDate": "1998-03-06 00:00:00.000",
+ "requiredDate": "1998-04-03 00:00:00.000",
+ "shippedDate": "1998-03-24 00:00:00.000",
+ "shipVia": 1,
+ "freight": 134.64,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 16,
+ "unitPrice": 17.45,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 14,
+ "discount": 0.1
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 16,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10933,
+ "customerID": "ISLAT",
+ "employeeID": 6,
+ "orderDate": "1998-03-06 00:00:00.000",
+ "requiredDate": "1998-04-03 00:00:00.000",
+ "shippedDate": "1998-03-16 00:00:00.000",
+ "shipVia": 3,
+ "freight": 54.15,
+ "shipName": "Island Trading",
+ "shipAddress": {
+ "street": "Garden House Crowther Way",
+ "city": "Cowes",
+ "region": "Isle of Wight",
+ "postalCode": "PO31 7PJ",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 53,
+ "unitPrice": 32.8,
+ "quantity": 2,
+ "discount": 0
+ },
+ {
+ "productID": 61,
+ "unitPrice": 28.5,
+ "quantity": 30,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10935,
+ "customerID": "WELLI",
+ "employeeID": 4,
+ "orderDate": "1998-03-09 00:00:00.000",
+ "requiredDate": "1998-04-06 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 3,
+ "freight": 47.59,
+ "shipName": "Wellington Importadora",
+ "shipAddress": {
+ "street": "Rua do Mercado 12",
+ "city": "Resende",
+ "region": "SP",
+ "postalCode": "08737-363",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 18,
+ "unitPrice": 62.5,
+ "quantity": 4,
+ "discount": 0.25
+ },
+ {
+ "productID": 23,
+ "unitPrice": 9,
+ "quantity": 8,
+ "discount": 0.25
+ },
+ {
+ "productID": 1,
+ "unitPrice": 18,
+ "quantity": 21,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10937,
+ "customerID": "CACTU",
+ "employeeID": 7,
+ "orderDate": "1998-03-10 00:00:00.000",
+ "requiredDate": "1998-03-24 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 31.51,
+ "shipName": "Cactus Comidas para llevar",
+ "shipAddress": {
+ "street": "Cerrito 333",
+ "city": "Buenos Aires",
+ "region": "NULL",
+ "postalCode": 1010,
+ "country": "Argentina"
+ },
+ "details": [
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 34,
+ "unitPrice": 14,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10938,
+ "customerID": "QUICK",
+ "employeeID": 3,
+ "orderDate": "1998-03-10 00:00:00.000",
+ "requiredDate": "1998-04-07 00:00:00.000",
+ "shippedDate": "1998-03-16 00:00:00.000",
+ "shipVia": 2,
+ "freight": 31.89,
+ "shipName": "QUICK-Stop",
+ "shipAddress": {
+ "street": "Taucherstraße 10",
+ "city": "Cunewalde",
+ "region": "NULL",
+ "postalCode": 1307,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 20,
+ "discount": 0.25
+ },
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 24,
+ "discount": 0.25
+ },
+ {
+ "productID": 60,
+ "unitPrice": 34,
+ "quantity": 49,
+ "discount": 0.25
+ },
+ {
+ "productID": 71,
+ "unitPrice": 21.5,
+ "quantity": 35,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10939,
+ "customerID": "MAGAA",
+ "employeeID": 2,
+ "orderDate": "1998-03-10 00:00:00.000",
+ "requiredDate": "1998-04-07 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 2,
+ "freight": 76.33,
+ "shipName": "Magazzini Alimentari Riuniti",
+ "shipAddress": {
+ "street": "Via Ludovico il Moro 22",
+ "city": "Bergamo",
+ "region": "NULL",
+ "postalCode": 24100,
+ "country": "Italy"
+ },
+ "details": [
+ {
+ "productID": 2,
+ "unitPrice": 19,
+ "quantity": 10,
+ "discount": 0.15
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 40,
+ "discount": 0.15
+ }
+ ]
+ },
+ {
+ "orderID": 10940,
+ "customerID": "BONAP",
+ "employeeID": 8,
+ "orderDate": "1998-03-11 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-03-23 00:00:00.000",
+ "shipVia": 3,
+ "freight": 19.77,
+ "shipName": "Bon app'",
+ "shipAddress": {
+ "street": "12 rue des Bouchers",
+ "city": "Marseille",
+ "region": "NULL",
+ "postalCode": 13008,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 7,
+ "unitPrice": 30,
+ "quantity": 8,
+ "discount": 0
+ },
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 20,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10941,
+ "customerID": "SAVEA",
+ "employeeID": 7,
+ "orderDate": "1998-03-11 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-03-20 00:00:00.000",
+ "shipVia": 2,
+ "freight": 400.81,
+ "shipName": "Save-a-lot Markets",
+ "shipAddress": {
+ "street": "187 Suffolk Ln.",
+ "city": "Boise",
+ "region": "ID",
+ "postalCode": 83720,
+ "country": "USA"
+ },
+ "details": [
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 44,
+ "discount": 0.25
+ },
+ {
+ "productID": 62,
+ "unitPrice": 49.3,
+ "quantity": 30,
+ "discount": 0.25
+ },
+ {
+ "productID": 68,
+ "unitPrice": 12.5,
+ "quantity": 80,
+ "discount": 0.25
+ },
+ {
+ "productID": 72,
+ "unitPrice": 34.8,
+ "quantity": 50,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10922,
+ "customerID": "HANAR",
+ "employeeID": 5,
+ "orderDate": "1998-03-03 00:00:00.000",
+ "requiredDate": "1998-03-31 00:00:00.000",
+ "shippedDate": "1998-03-05 00:00:00.000",
+ "shipVia": 3,
+ "freight": 62.74,
+ "shipName": "Hanari Carnes",
+ "shipAddress": {
+ "street": "Rua do Paço 67",
+ "city": "Rio de Janeiro",
+ "region": "RJ",
+ "postalCode": "05454-876",
+ "country": "Brazil"
+ },
+ "details": [
+ {
+ "productID": 17,
+ "unitPrice": 39,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 24,
+ "unitPrice": 4.5,
+ "quantity": 35,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10923,
+ "customerID": "LAMAI",
+ "employeeID": 7,
+ "orderDate": "1998-03-03 00:00:00.000",
+ "requiredDate": "1998-04-14 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 68.26,
+ "shipName": "La maison d'Asie",
+ "shipAddress": {
+ "street": "1 rue Alsace-Lorraine",
+ "city": "Toulouse",
+ "region": "NULL",
+ "postalCode": 31000,
+ "country": "France"
+ },
+ "details": [
+ {
+ "productID": 43,
+ "unitPrice": 46,
+ "quantity": 10,
+ "discount": 0.2
+ },
+ {
+ "productID": 67,
+ "unitPrice": 14,
+ "quantity": 24,
+ "discount": 0.2
+ },
+ {
+ "productID": 42,
+ "unitPrice": 14,
+ "quantity": 10,
+ "discount": 0.2
+ }
+ ]
+ },
+ {
+ "orderID": 10924,
+ "customerID": "BERGS",
+ "employeeID": 3,
+ "orderDate": "1998-03-04 00:00:00.000",
+ "requiredDate": "1998-04-01 00:00:00.000",
+ "shippedDate": "1998-04-08 00:00:00.000",
+ "shipVia": 2,
+ "freight": 151.52,
+ "shipName": "Berglunds snabbköp",
+ "shipAddress": {
+ "street": "Berguvsvägen 8",
+ "city": "Luleå",
+ "region": "NULL",
+ "postalCode": "S-958 22",
+ "country": "Sweden"
+ },
+ "details": [
+ {
+ "productID": 10,
+ "unitPrice": 31,
+ "quantity": 20,
+ "discount": 0.1
+ },
+ {
+ "productID": 28,
+ "unitPrice": 45.6,
+ "quantity": 30,
+ "discount": 0.1
+ },
+ {
+ "productID": 75,
+ "unitPrice": 7.75,
+ "quantity": 6,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10943,
+ "customerID": "BSBEV",
+ "employeeID": 4,
+ "orderDate": "1998-03-11 00:00:00.000",
+ "requiredDate": "1998-04-08 00:00:00.000",
+ "shippedDate": "1998-03-19 00:00:00.000",
+ "shipVia": 2,
+ "freight": 2.17,
+ "shipName": "B's Beverages",
+ "shipAddress": {
+ "street": "Fauntleroy Circus",
+ "city": "London",
+ "region": "NULL",
+ "postalCode": "EC2 5NT",
+ "country": "UK"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 15,
+ "discount": 0
+ },
+ {
+ "productID": 22,
+ "unitPrice": 21,
+ "quantity": 21,
+ "discount": 0
+ },
+ {
+ "productID": 46,
+ "unitPrice": 12,
+ "quantity": 15,
+ "discount": 0
+ }
+ ]
+ },
+ {
+ "orderID": 10944,
+ "customerID": "BOTTM",
+ "employeeID": 6,
+ "orderDate": "1998-03-12 00:00:00.000",
+ "requiredDate": "1998-03-26 00:00:00.000",
+ "shippedDate": "1998-03-13 00:00:00.000",
+ "shipVia": 3,
+ "freight": 52.92,
+ "shipName": "Bottom-Dollar Markets",
+ "shipAddress": {
+ "street": "23 Tsawassen Blvd.",
+ "city": "Tsawassen",
+ "region": "BC",
+ "postalCode": "T2F 8M4",
+ "country": "Canada"
+ },
+ "details": [
+ {
+ "productID": 11,
+ "unitPrice": 21,
+ "quantity": 5,
+ "discount": 0.25
+ },
+ {
+ "productID": 56,
+ "unitPrice": 38,
+ "quantity": 18,
+ "discount": 0
+ },
+ {
+ "productID": 44,
+ "unitPrice": 19.45,
+ "quantity": 18,
+ "discount": 0.25
+ }
+ ]
+ },
+ {
+ "orderID": 10945,
+ "customerID": "MORGK",
+ "employeeID": 4,
+ "orderDate": "1998-03-12 00:00:00.000",
+ "requiredDate": "1998-04-09 00:00:00.000",
+ "shippedDate": "1998-03-18 00:00:00.000",
+ "shipVia": 1,
+ "freight": 10.22,
+ "shipName": "Morgenstern Gesundkost",
+ "shipAddress": {
+ "street": "Heerstr. 22",
+ "city": "Leipzig",
+ "region": "NULL",
+ "postalCode": 4179,
+ "country": "Germany"
+ },
+ "details": [
+ {
+ "productID": 13,
+ "unitPrice": 6,
+ "quantity": 20,
+ "discount": 0
+ },
+ {
+ "productID": 31,
+ "unitPrice": 12.5,
+ "quantity": 10,
+ "discount": 0
+ }
+ ]
+ }
+]
diff --git a/vue-options-api-demos/grid/shared/products.json b/vue-options-api-demos/grid/shared/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/grid/shared/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/grid/shared/regions.json b/vue-options-api-demos/grid/shared/regions.json
new file mode 100644
index 00000000..debca3d1
--- /dev/null
+++ b/vue-options-api-demos/grid/shared/regions.json
@@ -0,0 +1,239 @@
+
+[
+ {
+ "regionID" : 1,
+ "name" : "Eastern",
+ "territories" : [
+ {
+ "territoryID" : 1833,
+ "name" : "Georgetow"
+ },
+ {
+ "territoryID" : 1581,
+ "name" : "Westboro"
+ },
+ {
+ "territoryID" : 2116,
+ "name" : "Boston"
+ },
+ {
+ "territoryID" : 2139,
+ "name" : "Cambridge"
+ },
+ {
+ "territoryID" : 1730,
+ "name" : "Bedford"
+ },
+ {
+ "territoryID" : 2903,
+ "name" : "Providence"
+ },
+ {
+ "territoryID" : 6897,
+ "name" : "Wilton"
+ },
+ {
+ "territoryID" : 7960,
+ "name" : "Morristown"
+ },
+ {
+ "territoryID" : 8837,
+ "name" : "Edison"
+ },
+ {
+ "territoryID" : 10019,
+ "name" : "NewYork"
+ },
+ {
+ "territoryID" : 10038,
+ "name" : "NewYork"
+ },
+ {
+ "territoryID" : 11747,
+ "name" : "Mellvile"
+ },
+ {
+ "territoryID" : 14450,
+ "name" : "Fairport"
+ },
+ {
+ "territoryID" : 19713,
+ "name" : "Neward"
+ },
+ {
+ "territoryID" : 2184,
+ "name" : "Braintree"
+ },
+ {
+ "territoryID" : 20852,
+ "name" : "Rockville"
+ },
+ {
+ "territoryID" : 27403,
+ "name" : "Greensboro"
+ },
+ {
+ "territoryID" : 27511,
+ "name" : "Cary"
+ },
+ {
+ "territoryID" : 40222,
+ "name" : "Louisville"
+ }
+ ]
+ },
+ {
+ "regionID" : 2,
+ "name" : "Western",
+ "territories" : [
+ {
+ "territoryID" : 60601,
+ "name" : "Chicago"
+ },
+ {
+ "territoryID" : 80202,
+ "name" : "Denver"
+ },
+ {
+ "territoryID" : 60179,
+ "name" : "HoffmanEstates"
+ },
+ {
+ "territoryID" : 85014,
+ "name" : "Phoenix"
+ },
+ {
+ "territoryID" : 80909,
+ "name" : "ColoradoSprings"
+ },
+ {
+ "territoryID" : 85251,
+ "name" : "Scottsdale"
+ },
+ {
+ "territoryID" : 90405,
+ "name" : "SantaMonica"
+ },
+ {
+ "territoryID" : 94025,
+ "name" : "MenloPark"
+ },
+ {
+ "territoryID" : 94105,
+ "name" : "SanFrancisco"
+ },
+ {
+ "territoryID" : 98004,
+ "name" : "Bellevue"
+ },
+ {
+ "territoryID" : 98052,
+ "name" : "Redmond"
+ },
+ {
+ "territoryID" : 98104,
+ "name" : "Seattle"
+ },
+ {
+ "territoryID" : 95008,
+ "name" : "Campbell"
+ },
+ {
+ "territoryID" : 95054,
+ "name" : "SantaClara"
+ },
+ {
+ "territoryID" : 95060,
+ "name" : "SantaCruz"
+ }
+ ]
+ },
+ {
+ "regionID" : 4,
+ "name" : "Southern",
+ "territories" : [
+ {
+ "territoryID" : 29202,
+ "name" : "Columbia"
+ },
+ {
+ "territoryID" : 30346,
+ "name" : "Atlanta"
+ },
+ {
+ "territoryID" : 32859,
+ "name" : "Orlando"
+ },
+ {
+ "territoryID" : 31406,
+ "name" : "Savannah"
+ },
+ {
+ "territoryID" : 72716,
+ "name" : "Bentonville"
+ },
+ {
+ "territoryID" : 75234,
+ "name" : "Dallas"
+ },
+ {
+ "territoryID" : 78759,
+ "name" : "Austin"
+ },
+ {
+ "territoryID" : 33607,
+ "name" : "Tampa"
+ }
+ ]
+ },
+ {
+ "regionID" : 3,
+ "name" : "Northern",
+ "territories" : [
+ {
+ "territoryID" : 19428,
+ "name" : "Philadelphia"
+ },
+ {
+ "territoryID" : 3801,
+ "name" : "Portsmouth"
+ },
+ {
+ "territoryID" : 3049,
+ "name" : "Hollis"
+ },
+ {
+ "territoryID" : 44122,
+ "name" : "Beachwood"
+ },
+ {
+ "territoryID" : 45839,
+ "name" : "Findlay"
+ },
+ {
+ "territoryID" : 48075,
+ "name" : "Southfield"
+ },
+ {
+ "territoryID" : 48084,
+ "name" : "Troy"
+ },
+ {
+ "territoryID" : 48304,
+ "name" : "BloomfieldHills"
+ },
+ {
+ "territoryID" : 53404,
+ "name" : "Racine"
+ },
+ {
+ "territoryID" : 55113,
+ "name" : "Roseville"
+ },
+ {
+ "territoryID" : 55439,
+ "name" : "Minneapolis"
+ }
+ ]
+ }
+]
diff --git a/vue-options-api-demos/grid/shared/sample-products.js b/vue-options-api-demos/grid/shared/sample-products.js
new file mode 100644
index 00000000..17c495bb
--- /dev/null
+++ b/vue-options-api-demos/grid/shared/sample-products.js
@@ -0,0 +1,182 @@
+export const sampleProducts = [
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 20)
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 12)
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 26)
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.35,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 17)
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 9, 19)
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ },
+ "FirstOrderedOn": new Date(1996, 7, 22)
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ },
+ "FirstOrderedOn": new Date(1996, 11, 1)
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ },
+ "FirstOrderedOn": new Date(1997, 1, 21)
+ },
+ {
+ "ProductID": 10,
+ "ProductName": "Ikura",
+ "SupplierID": 4,
+ "CategoryID": 8,
+ "QuantityPerUnit": "12 - 200 ml jars",
+ "UnitPrice": 31,
+ "UnitsInStock": 31,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 8,
+ "CategoryName": "Seafood",
+ "Description": "Seaweed and fish"
+ },
+ "FirstOrderedOn": new Date(1996, 8, 5)
+ }
+];
diff --git a/vue-options-api-demos/grid/shared/shippers.json b/vue-options-api-demos/grid/shared/shippers.json
new file mode 100644
index 00000000..3b4546bd
--- /dev/null
+++ b/vue-options-api-demos/grid/shared/shippers.json
@@ -0,0 +1,18 @@
+
+[
+ {
+ "shipperID" : 1,
+ "companyName" : "Speedy Express",
+ "phone" : "(503) 555-9831"
+ },
+ {
+ "shipperID" : 2,
+ "companyName" : "United Package",
+ "phone" : "(503) 555-3199"
+ },
+ {
+ "shipperID" : 3,
+ "companyName" : "Federal Shipping",
+ "phone" : "(503) 555-9931"
+ }
+]
diff --git a/vue-options-api-demos/grid/shared/suppliers.json b/vue-options-api-demos/grid/shared/suppliers.json
new file mode 100644
index 00000000..403a0673
--- /dev/null
+++ b/vue-options-api-demos/grid/shared/suppliers.json
@@ -0,0 +1,409 @@
+
+[
+ {
+ "supplierID" : 4,
+ "companyName" : "Tokyo Traders",
+ "contactName" : "Yoshi Nagase",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "9-8 Sekimai Musashino-shi",
+ "city" : "Tokyo",
+ "region" : "NULL",
+ "postalCode" : 100,
+ "country" : "Japan",
+ "phone" : "(03) 3555-5011"
+ }
+ },
+ {
+ "supplierID" : 5,
+ "companyName" : "Cooperativa de Quesos 'Las Cabras'",
+ "contactName" : "Antonio del Valle Saavedra",
+ "contactTitle" : "Export Administrator",
+ "address" : {
+ "street" : "Calle del Rosal 4",
+ "city" : "Oviedo",
+ "region" : "Asturias",
+ "postalCode" : 33007,
+ "country" : "Spain",
+ "phone" : "(98) 598 76 54"
+ }
+ },
+ {
+ "supplierID" : 6,
+ "companyName" : "Mayumi's",
+ "contactName" : "Mayumi Ohno",
+ "contactTitle" : "Marketing Representative",
+ "address" : {
+ "street" : "92 Setsuko Chuo-ku",
+ "city" : "Osaka",
+ "region" : "NULL",
+ "postalCode" : 545,
+ "country" : "Japan",
+ "phone" : "(06) 431-7877"
+ }
+ },
+ {
+ "supplierID" : 7,
+ "companyName" : "Pavlova Ltd.",
+ "contactName" : "Ian Devling",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "74 Rose St. Moonie Ponds",
+ "city" : "Melbourne",
+ "region" : "Victoria",
+ "postalCode" : 3058,
+ "country" : "Australia",
+ "phone" : "(03) 444-2343"
+ }
+ },
+ {
+ "supplierID" : 8,
+ "companyName" : "Specialty Biscuits Ltd.",
+ "contactName" : "Peter Wilson",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "29 King's Way",
+ "city" : "Manchester",
+ "region" : "NULL",
+ "postalCode" : "M14 GSD",
+ "country" : "UK",
+ "phone" : "(161) 555-4448"
+ }
+ },
+ {
+ "supplierID" : 9,
+ "companyName" : "PB Knäckebröd AB",
+ "contactName" : "Lars Peterson",
+ "contactTitle" : "Sales Agent",
+ "address" : {
+ "street" : "Kaloadagatan 13",
+ "city" : "Göteborg",
+ "region" : "NULL",
+ "postalCode" : "S-345 67",
+ "country" : "Sweden",
+ "phone" : "031-987 65 43"
+ }
+ },
+ {
+ "supplierID" : 10,
+ "companyName" : "Refrescos Americanas LTDA",
+ "contactName" : "Carlos Diaz",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Av. das Americanas 12.890",
+ "city" : "Sao Paulo",
+ "region" : "NULL",
+ "postalCode" : 5442,
+ "country" : "Brazil",
+ "phone" : "(11) 555 4640"
+ }
+ },
+ {
+ "supplierID" : 11,
+ "companyName" : "Heli Süßwaren GmbH & Co. KG",
+ "contactName" : "Petra Winkler",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Tiergartenstraße 5",
+ "city" : "Berlin",
+ "region" : "NULL",
+ "postalCode" : 10785,
+ "country" : "Germany",
+ "phone" : "(010) 9984510"
+ }
+ },
+ {
+ "supplierID" : 2,
+ "companyName" : "New Orleans Cajun Delights",
+ "contactName" : "Shelley Burke",
+ "contactTitle" : "Order Administrator",
+ "address" : {
+ "street" : "P.O. Box 78934",
+ "city" : "New Orleans",
+ "region" : "LA",
+ "postalCode" : 70117,
+ "country" : "USA",
+ "phone" : "(100) 555-4822"
+ }
+ },
+ {
+ "supplierID" : 12,
+ "companyName" : "Plutzer Lebensmittelgroßmärkte AG",
+ "contactName" : "Martin Bein",
+ "contactTitle" : "International Marketing Mgr.",
+ "address" : {
+ "street" : "Bogenallee 51",
+ "city" : "Frankfurt",
+ "region" : "NULL",
+ "postalCode" : 60439,
+ "country" : "Germany",
+ "phone" : "(069) 992755"
+ }
+ },
+ {
+ "supplierID" : 13,
+ "companyName" : "Nord-Ost-Fisch Handelsgesellschaft mbH",
+ "contactName" : "Sven Petersen",
+ "contactTitle" : "Coordinator Foreign Markets",
+ "address" : {
+ "street" : "Frahmredder 112a",
+ "city" : "Cuxhaven",
+ "region" : "NULL",
+ "postalCode" : 27478,
+ "country" : "Germany",
+ "phone" : "(04721) 8713"
+ }
+ },
+ {
+ "supplierID" : 14,
+ "companyName" : "Formaggi Fortini s.r.l.",
+ "contactName" : "Elio Rossi",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Viale Dante 75",
+ "city" : "Ravenna",
+ "region" : "NULL",
+ "postalCode" : 48100,
+ "country" : "Italy",
+ "phone" : "(0544) 60323"
+ }
+ },
+ {
+ "supplierID" : 15,
+ "companyName" : "Norske Meierier",
+ "contactName" : "Beate Vileid",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "Hatlevegen 5",
+ "city" : "Sandvika",
+ "region" : "NULL",
+ "postalCode" : 1320,
+ "country" : "Norway",
+ "phone" : "(0)2-953010"
+ }
+ },
+ {
+ "supplierID" : 1,
+ "companyName" : "Exotic Liquids",
+ "contactName" : "Charlotte Cooper",
+ "contactTitle" : "Purchasing Manager",
+ "address" : {
+ "street" : "49 Gilbert St.",
+ "city" : "London",
+ "region" : "NULL",
+ "postalCode" : "EC1 4SD",
+ "country" : "UK",
+ "phone" : "(171) 555-2222"
+ }
+ },
+ {
+ "supplierID" : 3,
+ "companyName" : "Grandma Kelly's Homestead",
+ "contactName" : "Regina Murphy",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "707 Oxford Rd.",
+ "city" : "Ann Arbor",
+ "region" : "MI",
+ "postalCode" : 48104,
+ "country" : "USA",
+ "phone" : "(313) 555-5735"
+ }
+ },
+ {
+ "supplierID" : 16,
+ "companyName" : "Bigfoot Breweries",
+ "contactName" : "Cheryl Saylor",
+ "contactTitle" : "Regional Account Rep.",
+ "address" : {
+ "street" : "3400 - 8th Avenue Suite 210",
+ "city" : "Bend",
+ "region" : "OR",
+ "postalCode" : 97101,
+ "country" : "USA",
+ "phone" : "(503) 555-9931"
+ }
+ },
+ {
+ "supplierID" : 17,
+ "companyName" : "Svensk Sjöföda AB",
+ "contactName" : "Michael Björn",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Brovallavägen 231",
+ "city" : "Stockholm",
+ "region" : "NULL",
+ "postalCode" : "S-123 45",
+ "country" : "Sweden",
+ "phone" : "08-123 45 67"
+ }
+ },
+ {
+ "supplierID" : 18,
+ "companyName" : "Aux joyeux ecclésiastiques",
+ "contactName" : "Guylène Nodier",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "203 Rue des Francs-Bourgeois",
+ "city" : "Paris",
+ "region" : "NULL",
+ "postalCode" : 75004,
+ "country" : "France",
+ "phone" : "(1) 03.83.00.68"
+ }
+ },
+ {
+ "supplierID" : 19,
+ "companyName" : "New England Seafood Cannery",
+ "contactName" : "Robb Merchant",
+ "contactTitle" : "Wholesale Account Agent",
+ "address" : {
+ "street" : "Order Processing Dept. 2100 Paul Revere Blvd.",
+ "city" : "Boston",
+ "region" : "MA",
+ "postalCode" : 2134,
+ "country" : "USA",
+ "phone" : "(617) 555-3267"
+ }
+ },
+ {
+ "supplierID" : 20,
+ "companyName" : "Leka Trading",
+ "contactName" : "Chandra Leka",
+ "contactTitle" : "Owner",
+ "address" : {
+ "street" : "471 Serangoon Loop Suite #402",
+ "city" : "Singapore",
+ "region" : "NULL",
+ "postalCode" : 512,
+ "country" : "Singapore",
+ "phone" : "555-8787"
+ }
+ },
+ {
+ "supplierID" : 21,
+ "companyName" : "Lyngbysild",
+ "contactName" : "Niels Petersen",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "Lyngbysild Fiskebakken 10",
+ "city" : "Lyngby",
+ "region" : "NULL",
+ "postalCode" : 2800,
+ "country" : "Denmark",
+ "phone" : 43844108
+ }
+ },
+ {
+ "supplierID" : 22,
+ "companyName" : "Zaanse Snoepfabriek",
+ "contactName" : "Dirk Luchte",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "Verkoop Rijnweg 22",
+ "city" : "Zaandam",
+ "region" : "NULL",
+ "postalCode" : "9999 ZZ",
+ "country" : "Netherlands",
+ "phone" : "(12345) 1212"
+ }
+ },
+ {
+ "supplierID" : 25,
+ "companyName" : "Ma Maison",
+ "contactName" : "Jean-Guy Lauzon",
+ "contactTitle" : "Marketing Manager",
+ "address" : {
+ "street" : "2960 Rue St. Laurent",
+ "city" : "Montréal",
+ "region" : "Québec",
+ "postalCode" : "H1J 1C3",
+ "country" : "Canada",
+ "phone" : "(514) 555-9022"
+ }
+ },
+ {
+ "supplierID" : 27,
+ "companyName" : "Escargots Nouveaux",
+ "contactName" : "Marie Delamare",
+ "contactTitle" : "Sales Manager",
+ "address" : {
+ "street" : "22 rue H. Voiron",
+ "city" : "Montceau",
+ "region" : "NULL",
+ "postalCode" : 71300,
+ "country" : "France",
+ "phone" : "85.57.00.07"
+ }
+ },
+ {
+ "supplierID" : 26,
+ "companyName" : "Pasta Buttini s.r.l.",
+ "contactName" : "Giovanni Giudici",
+ "contactTitle" : "Order Administrator",
+ "address" : {
+ "street" : "Via dei Gelsomini 153",
+ "city" : "Salerno",
+ "region" : "NULL",
+ "postalCode" : 84100,
+ "country" : "Italy",
+ "phone" : "(089) 6547665"
+ }
+ },
+ {
+ "supplierID" : 28,
+ "companyName" : "Gai pâturage",
+ "contactName" : "Eliane Noz",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "Bat. B 3 rue des Alpes",
+ "city" : "Annecy",
+ "region" : "NULL",
+ "postalCode" : 74000,
+ "country" : "France",
+ "phone" : "38.76.98.06"
+ }
+ },
+ {
+ "supplierID" : 23,
+ "companyName" : "Karkki Oy",
+ "contactName" : "Anne Heikkonen",
+ "contactTitle" : "Product Manager",
+ "address" : {
+ "street" : "Valtakatu 12",
+ "city" : "Lappeenranta",
+ "region" : "NULL",
+ "postalCode" : 53120,
+ "country" : "Finland",
+ "phone" : "(953) 10956"
+ }
+ },
+ {
+ "supplierID" : 24,
+ "companyName" : "G'day Mate",
+ "contactName" : "Wendy Mackenzie",
+ "contactTitle" : "Sales Representative",
+ "address" : {
+ "street" : "170 Prince Edward Parade Hunter's Hill",
+ "city" : "Sydney",
+ "region" : "NSW",
+ "postalCode" : 2042,
+ "country" : "Australia",
+ "phone" : "(02) 555-5914"
+ }
+ },
+ {
+ "supplierID" : 29,
+ "companyName" : "Forêts d'érables",
+ "contactName" : "Chantal Goulet",
+ "contactTitle" : "Accounting Manager",
+ "address" : {
+ "street" : "148 rue Chasseur",
+ "city" : "Ste-Hyacinthe",
+ "region" : "Québec",
+ "postalCode" : "J2S 7S8",
+ "country" : "Canada",
+ "phone" : "(514) 555-2955"
+ }
+ }
+]
diff --git a/vue-options-api-demos/grid/sorting/basic/main.js b/vue-options-api-demos/grid/sorting/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/sorting/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/sorting/basic/main.vue b/vue-options-api-demos/grid/sorting/basic/main.vue
new file mode 100644
index 00000000..32647a6d
--- /dev/null
+++ b/vue-options-api-demos/grid/sorting/basic/main.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/sorting/custom/main.js b/vue-options-api-demos/grid/sorting/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/sorting/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/sorting/custom/main.vue b/vue-options-api-demos/grid/sorting/custom/main.vue
new file mode 100644
index 00000000..1d22ff49
--- /dev/null
+++ b/vue-options-api-demos/grid/sorting/custom/main.vue
@@ -0,0 +1,100 @@
+
+
+
+
diff --git a/vue-options-api-demos/grid/styling/styling-cell/main.js b/vue-options-api-demos/grid/styling/styling-cell/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-cell/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/styling/styling-cell/main.vue b/vue-options-api-demos/grid/styling/styling-cell/main.vue
new file mode 100644
index 00000000..e3769081
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-cell/main.vue
@@ -0,0 +1,51 @@
+
+
+
+
+ {{props.dataItem[props.field]}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/styling/styling-cell/products.json b/vue-options-api-demos/grid/styling/styling-cell/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-cell/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/grid/styling/styling-class-name/main.js b/vue-options-api-demos/grid/styling/styling-class-name/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-class-name/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/styling/styling-class-name/main.vue b/vue-options-api-demos/grid/styling/styling-class-name/main.vue
new file mode 100644
index 00000000..771d997c
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-class-name/main.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/grid/styling/styling-class-name/products.json b/vue-options-api-demos/grid/styling/styling-class-name/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-class-name/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/grid/styling/styling-dynamic/main.js b/vue-options-api-demos/grid/styling/styling-dynamic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-dynamic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/styling/styling-dynamic/main.vue b/vue-options-api-demos/grid/styling/styling-dynamic/main.vue
new file mode 100644
index 00000000..30bf410d
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-dynamic/main.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/styling/styling-header-cell/main.js b/vue-options-api-demos/grid/styling/styling-header-cell/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-header-cell/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/styling/styling-header-cell/main.vue b/vue-options-api-demos/grid/styling/styling-header-cell/main.vue
new file mode 100644
index 00000000..3c814aa8
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-header-cell/main.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ {{props.title}}
+
+ {{props.children}}
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/styling/styling-header-cell/products.json b/vue-options-api-demos/grid/styling/styling-header-cell/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-header-cell/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/grid/styling/styling-row/main.js b/vue-options-api-demos/grid/styling/styling-row/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-row/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/grid/styling/styling-row/main.vue b/vue-options-api-demos/grid/styling/styling-row/main.vue
new file mode 100644
index 00000000..e113bba7
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-row/main.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/grid/styling/styling-row/products.json b/vue-options-api-demos/grid/styling/styling-row/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/grid/styling/styling-row/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/indicators/badge/alignment/main.js b/vue-options-api-demos/indicators/badge/alignment/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/alignment/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/badge/alignment/main.vue b/vue-options-api-demos/indicators/badge/alignment/main.vue
new file mode 100644
index 00000000..1d6cd1f4
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/alignment/main.vue
@@ -0,0 +1,112 @@
+
+
+
+
Badge Alignment
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/badge/container/main.js b/vue-options-api-demos/indicators/badge/container/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/container/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/badge/container/main.vue b/vue-options-api-demos/indicators/badge/container/main.vue
new file mode 100644
index 00000000..c9840866
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/container/main.vue
@@ -0,0 +1,131 @@
+
+
+
Using the BadgeContainer Component
+
+
+ KP
+
+
+
+
+
+ Available Updates
+
+
+
+
+
+
+ 11
+
+
+
+ 4
+
+
+ Action
+ 3
+
+
+
Using the Badge Component
+
+
+ Mail
+ 87
+
+
+ Available Updates
+
+
+
+
+
+
+
+ 11
+
+
+
+
+ 4
+
+
+
+ Action
+ 34
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/badge/cutout-border/main.js b/vue-options-api-demos/indicators/badge/cutout-border/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/cutout-border/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/badge/cutout-border/main.vue b/vue-options-api-demos/indicators/badge/cutout-border/main.vue
new file mode 100644
index 00000000..f3368667
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/cutout-border/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/badge/fill/main.js b/vue-options-api-demos/indicators/badge/fill/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/fill/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/badge/fill/main.vue b/vue-options-api-demos/indicators/badge/fill/main.vue
new file mode 100644
index 00000000..b7da64a5
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/fill/main.vue
@@ -0,0 +1,44 @@
+
+
+
+ {{ fill.toUpperCase() }}
+ 7
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/badge/overview/Contacts.vue b/vue-options-api-demos/indicators/badge/overview/Contacts.vue
new file mode 100644
index 00000000..2d42d412
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/overview/Contacts.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/badge/overview/SocialApps.vue b/vue-options-api-demos/indicators/badge/overview/SocialApps.vue
new file mode 100644
index 00000000..e6cedbdd
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/overview/SocialApps.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+ 1
+
+
+
+
+
+ 3
+
+
+
+
+
+ 77
+
+
+
+
+
+ 14+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/badge/overview/Status.vue b/vue-options-api-demos/indicators/badge/overview/Status.vue
new file mode 100644
index 00000000..4822c1a9
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/overview/Status.vue
@@ -0,0 +1,45 @@
+
+
+
+ New Updates
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/badge/overview/main.js b/vue-options-api-demos/indicators/badge/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/badge/overview/main.vue b/vue-options-api-demos/indicators/badge/overview/main.vue
new file mode 100644
index 00000000..8cf2e1a9
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/overview/main.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/badge/position/main.js b/vue-options-api-demos/indicators/badge/position/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/position/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/badge/position/main.vue b/vue-options-api-demos/indicators/badge/position/main.vue
new file mode 100644
index 00000000..fe18ce7a
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/position/main.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/badge/positioning/main.js b/vue-options-api-demos/indicators/badge/positioning/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/positioning/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/badge/positioning/main.vue b/vue-options-api-demos/indicators/badge/positioning/main.vue
new file mode 100644
index 00000000..42bdf20f
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/positioning/main.vue
@@ -0,0 +1,156 @@
+
+
+
+
Badge Alignment
+
+
+
+
Badge Position
+
+
+
+
+
+
+
+
+ 11
+
+
+
+ 3
+
+
+
+ 77
+
+
+
+ 14+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/badge/rounded/main.js b/vue-options-api-demos/indicators/badge/rounded/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/badge/rounded/main.vue b/vue-options-api-demos/indicators/badge/rounded/main.vue
new file mode 100644
index 00000000..0c2ebffe
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/rounded/main.vue
@@ -0,0 +1,62 @@
+
+
+
+
+ {{ rounded.toUpperCase() }}
+ 7
+
+
+ CUSTOM
+ 7
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/badge/size/main.js b/vue-options-api-demos/indicators/badge/size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/badge/size/main.vue b/vue-options-api-demos/indicators/badge/size/main.vue
new file mode 100644
index 00000000..6d02d371
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/size/main.vue
@@ -0,0 +1,61 @@
+
+
+
+
+ {{ size.toUpperCase() }}
+ 7
+
+
+ CUSTOM
+ 7
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/badge/theme-color/main.js b/vue-options-api-demos/indicators/badge/theme-color/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/theme-color/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/badge/theme-color/main.vue b/vue-options-api-demos/indicators/badge/theme-color/main.vue
new file mode 100644
index 00000000..3a72527b
--- /dev/null
+++ b/vue-options-api-demos/indicators/badge/theme-color/main.vue
@@ -0,0 +1,62 @@
+
+
+
+ {{ themeColor.toUpperCase() }}
+ 7
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/get-started/main.js b/vue-options-api-demos/indicators/get-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/get-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/get-started/main.vue b/vue-options-api-demos/indicators/get-started/main.vue
new file mode 100644
index 00000000..1b36f37f
--- /dev/null
+++ b/vue-options-api-demos/indicators/get-started/main.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/globalization/main.js b/vue-options-api-demos/indicators/globalization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/globalization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/globalization/main.vue b/vue-options-api-demos/indicators/globalization/main.vue
new file mode 100644
index 00000000..67d521cf
--- /dev/null
+++ b/vue-options-api-demos/indicators/globalization/main.vue
@@ -0,0 +1,145 @@
+
+
+
+
+
+ Action
+ 8
+
+
+
+
+
+ 99+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/loader/overview/main.js b/vue-options-api-demos/indicators/loader/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/loader/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/loader/overview/main.vue b/vue-options-api-demos/indicators/loader/overview/main.vue
new file mode 100644
index 00000000..29e6a231
--- /dev/null
+++ b/vue-options-api-demos/indicators/loader/overview/main.vue
@@ -0,0 +1,53 @@
+
+
+
+
+ Pick the animation:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/loader/size/main.js b/vue-options-api-demos/indicators/loader/size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/loader/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/loader/size/main.vue b/vue-options-api-demos/indicators/loader/size/main.vue
new file mode 100644
index 00000000..42b8988f
--- /dev/null
+++ b/vue-options-api-demos/indicators/loader/size/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/loader/theme-color/main.js b/vue-options-api-demos/indicators/loader/theme-color/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/loader/theme-color/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/loader/theme-color/main.vue b/vue-options-api-demos/indicators/loader/theme-color/main.vue
new file mode 100644
index 00000000..0350c18e
--- /dev/null
+++ b/vue-options-api-demos/indicators/loader/theme-color/main.vue
@@ -0,0 +1,51 @@
+
+
+
+
+ {{ color.toUpperCase() }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/loader/type/main.js b/vue-options-api-demos/indicators/loader/type/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/loader/type/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/loader/type/main.vue b/vue-options-api-demos/indicators/loader/type/main.vue
new file mode 100644
index 00000000..46da22a1
--- /dev/null
+++ b/vue-options-api-demos/indicators/loader/type/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/overview/main.js b/vue-options-api-demos/indicators/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/overview/main.vue b/vue-options-api-demos/indicators/overview/main.vue
new file mode 100644
index 00000000..d67e8884
--- /dev/null
+++ b/vue-options-api-demos/indicators/overview/main.vue
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/skeleton/animation/main.js b/vue-options-api-demos/indicators/skeleton/animation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/skeleton/animation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/skeleton/animation/main.vue b/vue-options-api-demos/indicators/skeleton/animation/main.vue
new file mode 100644
index 00000000..e353a92c
--- /dev/null
+++ b/vue-options-api-demos/indicators/skeleton/animation/main.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
Pulse animation(Default)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Wave animation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
No animation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/skeleton/dynamic/main.js b/vue-options-api-demos/indicators/skeleton/dynamic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/skeleton/dynamic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/skeleton/dynamic/main.vue b/vue-options-api-demos/indicators/skeleton/dynamic/main.vue
new file mode 100644
index 00000000..6c5fefd9
--- /dev/null
+++ b/vue-options-api-demos/indicators/skeleton/dynamic/main.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ cardData.title }}
+
+ {{ cardData.subtitle }}
+
+
+
+
+ {{ cardData.description }}
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/skeleton/overview/main.js b/vue-options-api-demos/indicators/skeleton/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/skeleton/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/skeleton/overview/main.vue b/vue-options-api-demos/indicators/skeleton/overview/main.vue
new file mode 100644
index 00000000..a94e97be
--- /dev/null
+++ b/vue-options-api-demos/indicators/skeleton/overview/main.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ cardData.title }}
+
+ {{ cardData.subtitle }}
+
+
+
+
+ {{ cardData.description }}
+
+
+
+
+
diff --git a/vue-options-api-demos/indicators/skeleton/shape/main.js b/vue-options-api-demos/indicators/skeleton/shape/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/indicators/skeleton/shape/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/indicators/skeleton/shape/main.vue b/vue-options-api-demos/indicators/skeleton/shape/main.vue
new file mode 100644
index 00000000..b1ea192c
--- /dev/null
+++ b/vue-options-api-demos/indicators/skeleton/shape/main.vue
@@ -0,0 +1,54 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/basic/main.js b/vue-options-api-demos/inputs/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/basic/main.vue b/vue-options-api-demos/inputs/basic/main.vue
new file mode 100644
index 00000000..243dbbc8
--- /dev/null
+++ b/vue-options-api-demos/inputs/basic/main.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
RangeSlider
+
+ 1
+ 3
+ 5
+ 7
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/appearance/configurator/CheckboxStyleConfigurator.vue b/vue-options-api-demos/inputs/checkbox/appearance/configurator/CheckboxStyleConfigurator.vue
new file mode 100644
index 00000000..cb2341a7
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/appearance/configurator/CheckboxStyleConfigurator.vue
@@ -0,0 +1,80 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/appearance/configurator/main.js b/vue-options-api-demos/inputs/checkbox/appearance/configurator/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/appearance/configurator/main.vue b/vue-options-api-demos/inputs/checkbox/appearance/configurator/main.vue
new file mode 100644
index 00000000..aea89a62
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/appearance/configurator/main.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/appearance/rounded/main.js b/vue-options-api-demos/inputs/checkbox/appearance/rounded/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/appearance/rounded/main.vue b/vue-options-api-demos/inputs/checkbox/appearance/rounded/main.vue
new file mode 100644
index 00000000..f7981983
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/appearance/rounded/main.vue
@@ -0,0 +1,56 @@
+
+
+
+
+ No roundness:
+
+
+
+ Small roundness:
+
+
+
+ Medium roundness:
+
+
+
+ Large roundness:
+
+
+
+ Custom roundness:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/appearance/size/main.js b/vue-options-api-demos/inputs/checkbox/appearance/size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/appearance/size/main.vue b/vue-options-api-demos/inputs/checkbox/appearance/size/main.vue
new file mode 100644
index 00000000..dbc7de11
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/appearance/size/main.vue
@@ -0,0 +1,49 @@
+
+
+
+
+ Small size:
+
+
+
+ Medium size:
+
+
+
+ Large size:
+
+
+
+ Custom size:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/controlled/checked/main.js b/vue-options-api-demos/inputs/checkbox/controlled/checked/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/controlled/checked/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/controlled/checked/main.vue b/vue-options-api-demos/inputs/checkbox/controlled/checked/main.vue
new file mode 100644
index 00000000..eb2ed0f1
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/controlled/checked/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
+ Change state
+
+
+   
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/controlled/value/main.js b/vue-options-api-demos/inputs/checkbox/controlled/value/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/controlled/value/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/controlled/value/main.vue b/vue-options-api-demos/inputs/checkbox/controlled/value/main.vue
new file mode 100644
index 00000000..8057bb4b
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/controlled/value/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
+ Change state
+
+
+   
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/default/main.js b/vue-options-api-demos/inputs/checkbox/default/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/default/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/default/main.vue b/vue-options-api-demos/inputs/checkbox/default/main.vue
new file mode 100644
index 00000000..55318496
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/default/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/disabled/main.js b/vue-options-api-demos/inputs/checkbox/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/disabled/main.vue b/vue-options-api-demos/inputs/checkbox/disabled/main.vue
new file mode 100644
index 00000000..97f8d452
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/disabled/main.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/form/basic/main.js b/vue-options-api-demos/inputs/checkbox/form/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/form/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/form/basic/main.vue b/vue-options-api-demos/inputs/checkbox/form/basic/main.vue
new file mode 100644
index 00000000..3c4dbaff
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/form/basic/main.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+ Create new account:
+
+
+
+
+
+
+
+
+ Sign up
+
+
+
+ Form submitted!
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/form/custom-message/main.js b/vue-options-api-demos/inputs/checkbox/form/custom-message/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/form/custom-message/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/form/custom-message/main.vue b/vue-options-api-demos/inputs/checkbox/form/custom-message/main.vue
new file mode 100644
index 00000000..ddcf6bc6
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/form/custom-message/main.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+ Create new account:
+
+
+
+
+
+
+
+
+ Sign up
+
+
+
+ Form submitted!
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/form/disable-styles/main.js b/vue-options-api-demos/inputs/checkbox/form/disable-styles/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/form/disable-styles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/form/disable-styles/main.vue b/vue-options-api-demos/inputs/checkbox/form/disable-styles/main.vue
new file mode 100644
index 00000000..6a552097
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/form/disable-styles/main.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+ Create new account:
+
+
+
+
+
+
+
+
+ Sign up
+
+
+
+ Form submitted!
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormCheckbox.vue b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormCheckbox.vue
new file mode 100644
index 00000000..9c415a82
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormCheckbox.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormContent.vue b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormContent.vue
new file mode 100644
index 00000000..07505af6
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormContent.vue
@@ -0,0 +1,106 @@
+
+
+
+
+ BOOK YOUR DREAM VACATION TODAY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormInput.vue b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormInput.vue
new file mode 100644
index 00000000..47972c76
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/FormInput.vue
@@ -0,0 +1,94 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.js b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.vue b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/form/kendo-vue-form/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/form/override/main.js b/vue-options-api-demos/inputs/checkbox/form/override/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/form/override/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/form/override/main.vue b/vue-options-api-demos/inputs/checkbox/form/override/main.vue
new file mode 100644
index 00000000..abbf4687
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/form/override/main.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+ Create new account:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/keyboard/main.js b/vue-options-api-demos/inputs/checkbox/keyboard/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/keyboard/main.vue b/vue-options-api-demos/inputs/checkbox/keyboard/main.vue
new file mode 100644
index 00000000..4778853d
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/keyboard/main.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/labels/custom/main.js b/vue-options-api-demos/inputs/checkbox/labels/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/labels/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/labels/custom/main.vue b/vue-options-api-demos/inputs/checkbox/labels/custom/main.vue
new file mode 100644
index 00000000..10689281
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/labels/custom/main.vue
@@ -0,0 +1,26 @@
+
+
+
+
+ By clicking Sign Up , you agree to our Terms and
+ Conditions.
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/labels/setup/main.js b/vue-options-api-demos/inputs/checkbox/labels/setup/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/labels/setup/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/labels/setup/main.vue b/vue-options-api-demos/inputs/checkbox/labels/setup/main.vue
new file mode 100644
index 00000000..22a4038c
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/labels/setup/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/checkbox/main/main.js b/vue-options-api-demos/inputs/checkbox/main/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/main/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/checkbox/main/main.vue b/vue-options-api-demos/inputs/checkbox/main/main.vue
new file mode 100644
index 00000000..277d0715
--- /dev/null
+++ b/vue-options-api-demos/inputs/checkbox/main/main.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorgradient/colorcontrast/main.js b/vue-options-api-demos/inputs/colorgradient/colorcontrast/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/colorcontrast/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorgradient/colorcontrast/main.vue b/vue-options-api-demos/inputs/colorgradient/colorcontrast/main.vue
new file mode 100644
index 00000000..c51c167c
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/colorcontrast/main.vue
@@ -0,0 +1,43 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorgradient/controlled/main.js b/vue-options-api-demos/inputs/colorgradient/controlled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/controlled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorgradient/controlled/main.vue b/vue-options-api-demos/inputs/colorgradient/controlled/main.vue
new file mode 100644
index 00000000..9bf1dea3
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/controlled/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
value and change event
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorgradient/disabled/main.js b/vue-options-api-demos/inputs/colorgradient/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorgradient/disabled/main.vue b/vue-options-api-demos/inputs/colorgradient/disabled/main.vue
new file mode 100644
index 00000000..d303f0a5
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/disabled/main.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorgradient/events/Logger.vue b/vue-options-api-demos/inputs/colorgradient/events/Logger.vue
new file mode 100644
index 00000000..aa04a80b
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/colorgradient/events/main.js b/vue-options-api-demos/inputs/colorgradient/events/main.js
new file mode 100644
index 00000000..1f1c6c86
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/events/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
+
diff --git a/vue-options-api-demos/inputs/colorgradient/events/main.vue b/vue-options-api-demos/inputs/colorgradient/events/main.vue
new file mode 100644
index 00000000..195215e6
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/events/main.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorgradient/keyboard/main.js b/vue-options-api-demos/inputs/colorgradient/keyboard/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorgradient/keyboard/main.vue b/vue-options-api-demos/inputs/colorgradient/keyboard/main.vue
new file mode 100644
index 00000000..21fc51c9
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/keyboard/main.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorgradient/opacity/main.js b/vue-options-api-demos/inputs/colorgradient/opacity/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/opacity/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorgradient/opacity/main.vue b/vue-options-api-demos/inputs/colorgradient/opacity/main.vue
new file mode 100644
index 00000000..af77ecf9
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/opacity/main.vue
@@ -0,0 +1,29 @@
+
+
+
+
+ Selected color: {{ value }}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorgradient/overview/main.js b/vue-options-api-demos/inputs/colorgradient/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorgradient/overview/main.vue b/vue-options-api-demos/inputs/colorgradient/overview/main.vue
new file mode 100644
index 00000000..fcd2a2dc
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorgradient/overview/main.vue
@@ -0,0 +1,46 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpalette/controlled/main.js b/vue-options-api-demos/inputs/colorpalette/controlled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/controlled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpalette/controlled/main.vue b/vue-options-api-demos/inputs/colorpalette/controlled/main.vue
new file mode 100644
index 00000000..55d3a97c
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/controlled/main.vue
@@ -0,0 +1,33 @@
+
+
+
+ Selected color: {{ value }}
+
+
+
+
+ Selected color: {{ value }}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpalette/custom/main.js b/vue-options-api-demos/inputs/colorpalette/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpalette/custom/main.vue b/vue-options-api-demos/inputs/colorpalette/custom/main.vue
new file mode 100644
index 00000000..f1232ad1
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/custom/main.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpalette/disabled/main.js b/vue-options-api-demos/inputs/colorpalette/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpalette/disabled/main.vue b/vue-options-api-demos/inputs/colorpalette/disabled/main.vue
new file mode 100644
index 00000000..3f94de29
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/disabled/main.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpalette/keyboard/main.js b/vue-options-api-demos/inputs/colorpalette/keyboard/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpalette/keyboard/main.vue b/vue-options-api-demos/inputs/colorpalette/keyboard/main.vue
new file mode 100644
index 00000000..e83327c3
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/keyboard/main.vue
@@ -0,0 +1,26 @@
+
+
+
+
+ (use ←↓↑→
to navigate, enter
to select the
+ value)
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpalette/overview/basic/main.js b/vue-options-api-demos/inputs/colorpalette/overview/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/overview/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpalette/overview/basic/main.vue b/vue-options-api-demos/inputs/colorpalette/overview/basic/main.vue
new file mode 100644
index 00000000..2546f633
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/overview/basic/main.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
Comfy T-shirt with a cut-away neckline
+
$19.99
+
incl. VAT
+
+
{{ colorNames[value] }}
+
+
+ Add to cart
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpalette/overview/basic/styles.css b/vue-options-api-demos/inputs/colorpalette/overview/basic/styles.css
new file mode 100644
index 00000000..f7de5d25
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/overview/basic/styles.css
@@ -0,0 +1,56 @@
+.example {
+ display: flex;
+ justify-content: space-evenly;
+ align-items: center;
+ margin: 0 auto;
+ width: 700px;
+ color: #44403f;
+ }
+ .k-colorpalette .k-item {
+ border-radius: 50%;
+ }
+ .description {
+ width: 340px;
+ margin-top: 35px;
+ align-self: flex-start;
+ }
+ h1 {
+ font-size: 32px;
+ font-weight: bold;
+ margin-bottom: 20px;
+ }
+ p {
+ font-size: 20px;
+ letter-spacing: 0.025em;
+ margin-bottom: 0;
+ }
+ .description span {
+ color: #8e8682;
+ display: block;
+ font-size: 13px;
+ }
+ .selected-color {
+ margin: 40px 0 10px 0;
+ }
+ .img {
+ width: 100%;
+ height: 480px;
+ margin-right: 10px;
+ background-size: cover;
+ background-image: url("https://demos.telerik.com/kendo-vue-ui/assets/inputs/colorpalette/demo-img.png");
+ }
+ button {
+ display: block;
+ background: transparent;
+ color: #44403f;
+ border-color: currentColor;
+ width: 200px;
+ margin-top: 40px;
+ padding: 8px;
+ font-size: 20px;
+ }
+ button:hover {
+ background: #0083ff;
+ color: #fff;
+ border-color: currentColor;
+ }
diff --git a/vue-options-api-demos/inputs/colorpalette/overview/events/Logger.vue b/vue-options-api-demos/inputs/colorpalette/overview/events/Logger.vue
new file mode 100644
index 00000000..aa04a80b
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/overview/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/colorpalette/overview/events/main.js b/vue-options-api-demos/inputs/colorpalette/overview/events/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/overview/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpalette/overview/events/main.vue b/vue-options-api-demos/inputs/colorpalette/overview/events/main.vue
new file mode 100644
index 00000000..724fd12f
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/overview/events/main.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpalette/presets/main.js b/vue-options-api-demos/inputs/colorpalette/presets/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/presets/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpalette/presets/main.vue b/vue-options-api-demos/inputs/colorpalette/presets/main.vue
new file mode 100644
index 00000000..10205af8
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpalette/presets/main.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
Office
+
+
+
+
Apex
+
+
+
+
Austin
+
+
+
+
Clarity
+
+
+
+
+
+
Slipstream
+
+
+
+
Metro
+
+
+
+
Flow
+
+
+
+
Hardcover
+
+
+
+
+
+
Trek
+
+
+
+
Verve
+
+
+
+
Basic
+
+
+
+
Monochrome
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.js b/vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.vue b/vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.vue
new file mode 100644
index 00000000..a438c3e9
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/adaptive-rendering/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/appearance/ColorPickerConfigurator.vue b/vue-options-api-demos/inputs/colorpicker/appearance/ColorPickerConfigurator.vue
new file mode 100644
index 00000000..6301fe82
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/appearance/ColorPickerConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/colorpicker/appearance/main.js b/vue-options-api-demos/inputs/colorpicker/appearance/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/appearance/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/appearance/main.vue b/vue-options-api-demos/inputs/colorpicker/appearance/main.vue
new file mode 100644
index 00000000..1bb9a867
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/appearance/main.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/colorcontrast/main.js b/vue-options-api-demos/inputs/colorpicker/colorcontrast/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/colorcontrast/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/colorcontrast/main.vue b/vue-options-api-demos/inputs/colorpicker/colorcontrast/main.vue
new file mode 100644
index 00000000..9e6254ec
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/colorcontrast/main.vue
@@ -0,0 +1,49 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/controlled/popup/main.js b/vue-options-api-demos/inputs/colorpicker/controlled/popup/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/controlled/popup/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/controlled/popup/main.vue b/vue-options-api-demos/inputs/colorpicker/controlled/popup/main.vue
new file mode 100644
index 00000000..16b034d6
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/controlled/popup/main.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
Controlled ColorPicker
+
+
+
+ Toggle
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/controlled/value/main.js b/vue-options-api-demos/inputs/colorpicker/controlled/value/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/controlled/value/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/controlled/value/main.vue b/vue-options-api-demos/inputs/colorpicker/controlled/value/main.vue
new file mode 100644
index 00000000..80832f6d
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/controlled/value/main.vue
@@ -0,0 +1,33 @@
+
+
+
+ value and change: {{ value }}
+
+
+
+
+ v-model: {{ value }}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.js b/vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.vue b/vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.vue
new file mode 100644
index 00000000..09e0d0a1
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/custom/custom-icons/main.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/custom/gradient/main.js b/vue-options-api-demos/inputs/colorpicker/custom/gradient/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/custom/gradient/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/custom/gradient/main.vue b/vue-options-api-demos/inputs/colorpicker/custom/gradient/main.vue
new file mode 100644
index 00000000..d2639f46
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/custom/gradient/main.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.js b/vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.vue b/vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.vue
new file mode 100644
index 00000000..63a95d75
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/custom/kendo-icons/main.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/custom/palette/main.js b/vue-options-api-demos/inputs/colorpicker/custom/palette/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/custom/palette/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/custom/palette/main.vue b/vue-options-api-demos/inputs/colorpicker/custom/palette/main.vue
new file mode 100644
index 00000000..7bcd10a1
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/custom/palette/main.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/default/main.js b/vue-options-api-demos/inputs/colorpicker/default/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/default/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/default/main.vue b/vue-options-api-demos/inputs/colorpicker/default/main.vue
new file mode 100644
index 00000000..b4d57e97
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/default/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
ColorPicker with default value
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/disabled/main.js b/vue-options-api-demos/inputs/colorpicker/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/disabled/main.vue b/vue-options-api-demos/inputs/colorpicker/disabled/main.vue
new file mode 100644
index 00000000..502256e8
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/disabled/main.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/events/Logger.vue b/vue-options-api-demos/inputs/colorpicker/events/Logger.vue
new file mode 100644
index 00000000..aa04a80b
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/colorpicker/events/main.js b/vue-options-api-demos/inputs/colorpicker/events/main.js
new file mode 100644
index 00000000..1f1c6c86
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/events/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
+
diff --git a/vue-options-api-demos/inputs/colorpicker/events/main.vue b/vue-options-api-demos/inputs/colorpicker/events/main.vue
new file mode 100644
index 00000000..79a2e99e
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/events/main.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/keyboard/main.js b/vue-options-api-demos/inputs/colorpicker/keyboard/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/keyboard/main.vue b/vue-options-api-demos/inputs/colorpicker/keyboard/main.vue
new file mode 100644
index 00000000..986ae8e1
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/keyboard/main.vue
@@ -0,0 +1,26 @@
+
+
+
+
+ (use Alt+↓
to open the popup, ←↓↑→
to navigate,
+ enter
to select the value)
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/overview/main.js b/vue-options-api-demos/inputs/colorpicker/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/overview/main.vue b/vue-options-api-demos/inputs/colorpicker/overview/main.vue
new file mode 100644
index 00000000..4c71221d
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/overview/main.vue
@@ -0,0 +1,28 @@
+
+
+
+
ColorPicker with gradient and palette
+
+
+
+
ColorPicker with predefined colors
+
+
+
+
ColorPicker with gradient
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/view/combined/main.js b/vue-options-api-demos/inputs/colorpicker/view/combined/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/view/combined/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/view/combined/main.vue b/vue-options-api-demos/inputs/colorpicker/view/combined/main.vue
new file mode 100644
index 00000000..179364a9
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/view/combined/main.vue
@@ -0,0 +1,36 @@
+
+
+
+ {{ selectedColor }}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/colorpicker/view/popup/main.js b/vue-options-api-demos/inputs/colorpicker/view/popup/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/view/popup/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/colorpicker/view/popup/main.vue b/vue-options-api-demos/inputs/colorpicker/view/popup/main.vue
new file mode 100644
index 00000000..ea150f69
--- /dev/null
+++ b/vue-options-api-demos/inputs/colorpicker/view/popup/main.vue
@@ -0,0 +1,46 @@
+
+
+
+ {{ view }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/common/es.json b/vue-options-api-demos/inputs/common/es.json
new file mode 100644
index 00000000..45ec5932
--- /dev/null
+++ b/vue-options-api-demos/inputs/common/es.json
@@ -0,0 +1,6 @@
+{
+ "numerictextbox": {
+ "increment": "Incrementar valor",
+ "decrement": "Disminuir valor"
+ }
+}
diff --git a/vue-options-api-demos/inputs/flatcolorpicker/basic/main.js b/vue-options-api-demos/inputs/flatcolorpicker/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/flatcolorpicker/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/flatcolorpicker/basic/main.vue b/vue-options-api-demos/inputs/flatcolorpicker/basic/main.vue
new file mode 100644
index 00000000..4f3633c2
--- /dev/null
+++ b/vue-options-api-demos/inputs/flatcolorpicker/basic/main.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.js b/vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.vue b/vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.vue
new file mode 100644
index 00000000..5afb1e7d
--- /dev/null
+++ b/vue-options-api-demos/inputs/flatcolorpicker/customization/footer/main.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.js b/vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.vue b/vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.vue
new file mode 100644
index 00000000..da4fdf61
--- /dev/null
+++ b/vue-options-api-demos/inputs/flatcolorpicker/customization/header/main.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/flatcolorpicker/disabled/main.js b/vue-options-api-demos/inputs/flatcolorpicker/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/flatcolorpicker/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/flatcolorpicker/disabled/main.vue b/vue-options-api-demos/inputs/flatcolorpicker/disabled/main.vue
new file mode 100644
index 00000000..5df9c1d3
--- /dev/null
+++ b/vue-options-api-demos/inputs/flatcolorpicker/disabled/main.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/flatcolorpicker/events/Logger.vue b/vue-options-api-demos/inputs/flatcolorpicker/events/Logger.vue
new file mode 100644
index 00000000..aa04a80b
--- /dev/null
+++ b/vue-options-api-demos/inputs/flatcolorpicker/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/flatcolorpicker/events/main.js b/vue-options-api-demos/inputs/flatcolorpicker/events/main.js
new file mode 100644
index 00000000..1f1c6c86
--- /dev/null
+++ b/vue-options-api-demos/inputs/flatcolorpicker/events/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
+
diff --git a/vue-options-api-demos/inputs/flatcolorpicker/events/main.vue b/vue-options-api-demos/inputs/flatcolorpicker/events/main.vue
new file mode 100644
index 00000000..bd19240c
--- /dev/null
+++ b/vue-options-api-demos/inputs/flatcolorpicker/events/main.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.js b/vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.vue b/vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.vue
new file mode 100644
index 00000000..9e67683e
--- /dev/null
+++ b/vue-options-api-demos/inputs/flatcolorpicker/keyboard/main.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/floating-labels/main.js b/vue-options-api-demos/inputs/floating-labels/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/floating-labels/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/floating-labels/main.vue b/vue-options-api-demos/inputs/floating-labels/main.vue
new file mode 100644
index 00000000..c908a7d1
--- /dev/null
+++ b/vue-options-api-demos/inputs/floating-labels/main.vue
@@ -0,0 +1,59 @@
+
+
+
+
Input
+
+
+
MaskedTextBox
+
+
+
NumericTextBox
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/get-started/main.js b/vue-options-api-demos/inputs/get-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/get-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/get-started/main.vue b/vue-options-api-demos/inputs/get-started/main.vue
new file mode 100644
index 00000000..505c36bb
--- /dev/null
+++ b/vue-options-api-demos/inputs/get-started/main.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/globalization/es.json b/vue-options-api-demos/inputs/globalization/es.json
new file mode 100644
index 00000000..efa4e824
--- /dev/null
+++ b/vue-options-api-demos/inputs/globalization/es.json
@@ -0,0 +1,11 @@
+{
+ "numerictextbox": {
+ "increment": "Incrementar valor",
+ "decrement": "Disminuir valor"
+ },
+ "slider": {
+ "increment": "Incrementar valor",
+ "decrement": "Disminuir valor",
+ "dragTitle": "arrastrar"
+ }
+}
diff --git a/vue-options-api-demos/inputs/globalization/main.js b/vue-options-api-demos/inputs/globalization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/globalization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/globalization/main.vue b/vue-options-api-demos/inputs/globalization/main.vue
new file mode 100644
index 00000000..8f984eaf
--- /dev/null
+++ b/vue-options-api-demos/inputs/globalization/main.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+ NumericTextBox
+
+
+ Slider
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator copy.vue b/vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator copy.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator copy.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator.vue b/vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/appearance/configurator/InputStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/input/appearance/configurator/main.js b/vue-options-api-demos/inputs/input/appearance/configurator/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/input/appearance/configurator/main.vue b/vue-options-api-demos/inputs/input/appearance/configurator/main.vue
new file mode 100644
index 00000000..060176cd
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/appearance/configurator/main.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/input/appearance/fill-mode/main.js b/vue-options-api-demos/inputs/input/appearance/fill-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/input/appearance/fill-mode/main.vue b/vue-options-api-demos/inputs/input/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..d00c0120
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/appearance/fill-mode/main.vue
@@ -0,0 +1,54 @@
+
+
+
+
+ Flat:
+
+
+
+ Solid:
+
+
+
+ Outline:
+
+
+
+
+
+ Custom fill mode:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/input/appearance/rounded/main.js b/vue-options-api-demos/inputs/input/appearance/rounded/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/input/appearance/rounded/main.vue b/vue-options-api-demos/inputs/input/appearance/rounded/main.vue
new file mode 100644
index 00000000..b783521b
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/appearance/rounded/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+ Small roundness:
+
+
+
+ Medium roundness:
+
+
+
+ Large roundness:
+
+
+
+
+
+ Full roundness:
+
+
+
+ Custom roundness:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/input/appearance/size/main.js b/vue-options-api-demos/inputs/input/appearance/size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/input/appearance/size/main.vue b/vue-options-api-demos/inputs/input/appearance/size/main.vue
new file mode 100644
index 00000000..c4c1037a
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/appearance/size/main.vue
@@ -0,0 +1,53 @@
+
+
+
+
+ Small size:
+
+
+
+ Medium size:
+
+
+
+ Large size:
+
+
+
+
+
+ Custom size:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/input/basic/main.js b/vue-options-api-demos/inputs/input/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/input/basic/main.vue b/vue-options-api-demos/inputs/input/basic/main.vue
new file mode 100644
index 00000000..fc2e9f3a
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/basic/main.vue
@@ -0,0 +1,17 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/input/forms/basic/main.js b/vue-options-api-demos/inputs/input/forms/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/forms/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/input/forms/basic/main.vue b/vue-options-api-demos/inputs/input/forms/basic/main.vue
new file mode 100644
index 00000000..357f63c8
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/forms/basic/main.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+ Create new account:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/inputs/input/forms/custom-message/main.js b/vue-options-api-demos/inputs/input/forms/custom-message/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/forms/custom-message/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/input/forms/custom-message/main.vue b/vue-options-api-demos/inputs/input/forms/custom-message/main.vue
new file mode 100644
index 00000000..166e664f
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/forms/custom-message/main.vue
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+ Create new account:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/inputs/input/forms/disable-styles/main.js b/vue-options-api-demos/inputs/input/forms/disable-styles/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/forms/disable-styles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/input/forms/disable-styles/main.vue b/vue-options-api-demos/inputs/input/forms/disable-styles/main.vue
new file mode 100644
index 00000000..0898b436
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/forms/disable-styles/main.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+ Create new account:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/inputs/input/forms/override/main.js b/vue-options-api-demos/inputs/input/forms/override/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/forms/override/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/input/forms/override/main.vue b/vue-options-api-demos/inputs/input/forms/override/main.vue
new file mode 100644
index 00000000..2b20c074
--- /dev/null
+++ b/vue-options-api-demos/inputs/input/forms/override/main.vue
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+ Create new account:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.vue
new file mode 100644
index 00000000..68637c14
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/clear-button/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/InputIcons.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/InputIcons.vue
new file mode 100644
index 00000000..f1df8505
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/InputIcons.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.vue
new file mode 100644
index 00000000..6a4cf2e5
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/disabled/main.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.vue
new file mode 100644
index 00000000..28f3823e
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/icon-name/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.vue
new file mode 100644
index 00000000..6b59ba84
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/loading-icon/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/InputIcons.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/InputIcons.vue
new file mode 100644
index 00000000..b00e1cc0
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/InputIcons.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.vue
new file mode 100644
index 00000000..4205e44b
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/prefix/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.vue
new file mode 100644
index 00000000..532f500d
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/separator/main.vue
@@ -0,0 +1,33 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.vue
new file mode 100644
index 00000000..ae5599e1
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/suffix/main.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.js b/vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.vue b/vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.vue
new file mode 100644
index 00000000..a4c45fc4
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/adornments/validation-icon/main.vue
@@ -0,0 +1,39 @@
+
+
+ Valid Input Icon:
+
+
+
+
+ Invalid Input Icon:
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/MaskedTextBoxStyleConfigurator.vue b/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/MaskedTextBoxStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/MaskedTextBoxStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.js b/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.vue b/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.vue
new file mode 100644
index 00000000..740aa7d8
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/configurator/main.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.js b/vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.vue b/vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..1a474b34
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/fill-mode/main.vue
@@ -0,0 +1,71 @@
+
+
+
+
+ Flat:
+
+
+
+ Solid:
+
+
+
+ Outline:
+
+
+
+
+
+ Custom fill mode:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.js b/vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.vue b/vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.vue
new file mode 100644
index 00000000..2ca7ce35
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/rounded/main.vue
@@ -0,0 +1,80 @@
+
+
+
+
+ Small roundness:
+
+
+
+ Medium roundness:
+
+
+
+ Large roundness:
+
+
+
+
+
+ Full roundness:
+
+
+
+ Custom roundness:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.js b/vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.vue b/vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.vue
new file mode 100644
index 00000000..c395407a
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/appearance/size/main.vue
@@ -0,0 +1,70 @@
+
+
+
+
+ Small size:
+
+
+
+ Medium size:
+
+
+
+ Large size:
+
+
+
+
+
+ Custom size:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/basic/main.js b/vue-options-api-demos/inputs/maskedtextbox/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/basic/main.vue b/vue-options-api-demos/inputs/maskedtextbox/basic/main.vue
new file mode 100644
index 00000000..f306f01e
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/basic/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
MaskedTextBox with adornments
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/disabled/main.js b/vue-options-api-demos/inputs/maskedtextbox/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/disabled/main.vue b/vue-options-api-demos/inputs/maskedtextbox/disabled/main.vue
new file mode 100644
index 00000000..43abb2c4
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/disabled/main.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.js b/vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.vue b/vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.vue
new file mode 100644
index 00000000..406500a1
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/forms/custom-message/main.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+ Please fill in the fields:
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.js b/vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.vue b/vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.vue
new file mode 100644
index 00000000..7ab86e4a
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/forms/disable-style/main.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+ Please fill in the fields:
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.js b/vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.vue b/vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.vue
new file mode 100644
index 00000000..ac8cc1a1
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/forms/enforce/main.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+ Please fill in the fields:
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.js b/vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.vue b/vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.vue
new file mode 100644
index 00000000..5a97a19e
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/forms/validation/main.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+ Please fill in the fields:
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/input-mode/main.js b/vue-options-api-demos/inputs/maskedtextbox/input-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/input-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/input-mode/main.vue b/vue-options-api-demos/inputs/maskedtextbox/input-mode/main.vue
new file mode 100644
index 00000000..2b04f93c
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/input-mode/main.vue
@@ -0,0 +1,76 @@
+
+
+
+
inputmode=text (default)
+
+
+
+
inputmode=tel
+
+
+
+
+
+
+
+
inputmode=email
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.js b/vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.vue b/vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.vue
new file mode 100644
index 00000000..b16c9a0a
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/masks/basic/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.js b/vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.vue b/vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.vue
new file mode 100644
index 00000000..5c397425
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/masks/extend/main.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
{{mask}}
+
+ Y - cyrillic only
+ L - latin only
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/readonly/main.js b/vue-options-api-demos/inputs/maskedtextbox/readonly/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/readonly/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/readonly/main.vue b/vue-options-api-demos/inputs/maskedtextbox/readonly/main.vue
new file mode 100644
index 00000000..0af7d65f
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/readonly/main.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/valid-state/main.js b/vue-options-api-demos/inputs/maskedtextbox/valid-state/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/valid-state/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/valid-state/main.vue b/vue-options-api-demos/inputs/maskedtextbox/valid-state/main.vue
new file mode 100644
index 00000000..4dcedcf5
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/valid-state/main.vue
@@ -0,0 +1,49 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/maskedtextbox/value/main.js b/vue-options-api-demos/inputs/maskedtextbox/value/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/value/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/maskedtextbox/value/main.vue b/vue-options-api-demos/inputs/maskedtextbox/value/main.vue
new file mode 100644
index 00000000..6b0941f5
--- /dev/null
+++ b/vue-options-api-demos/inputs/maskedtextbox/value/main.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.vue
new file mode 100644
index 00000000..62d331fe
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/clear-button/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/InputIcons.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/InputIcons.vue
new file mode 100644
index 00000000..b00e1cc0
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/InputIcons.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.vue
new file mode 100644
index 00000000..b4b56641
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/disabled/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.vue
new file mode 100644
index 00000000..8aa41600
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/icon-name/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.vue
new file mode 100644
index 00000000..979a526b
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/loading-icon/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/InputIcons.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/InputIcons.vue
new file mode 100644
index 00000000..b00e1cc0
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/InputIcons.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.vue
new file mode 100644
index 00000000..4688c047
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/prefix/main.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.vue
new file mode 100644
index 00000000..3c480f43
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/separator/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.vue
new file mode 100644
index 00000000..3362213b
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/suffix/main.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.js b/vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.vue b/vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.vue
new file mode 100644
index 00000000..7b24e232
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/adornments/validation-icon/main.vue
@@ -0,0 +1,22 @@
+
+
+ Valid Input Icon:
+
+
+
+
+ Invalid Input Icon:
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/NumericTextBoxStyleConfigurator.vue b/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/NumericTextBoxStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/NumericTextBoxStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.js b/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.vue b/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.vue
new file mode 100644
index 00000000..c3e11df9
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/appearance/configurator/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.js b/vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.vue b/vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..6b58cbd3
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/appearance/fill-mode/main.vue
@@ -0,0 +1,54 @@
+
+
+
+
+ Flat:
+
+
+
+ Solid:
+
+
+
+ Outline:
+
+
+
+
+
+ Custom fill mode:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.js b/vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.vue b/vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.vue
new file mode 100644
index 00000000..21562787
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/appearance/rounded/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+ Small roundness:
+
+
+
+ Medium roundness:
+
+
+
+ Large roundness:
+
+
+
+
+
+ Full roundness:
+
+
+
+ Custom roundness:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/size/main.js b/vue-options-api-demos/inputs/numerictextbox/appearance/size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/appearance/size/main.vue b/vue-options-api-demos/inputs/numerictextbox/appearance/size/main.vue
new file mode 100644
index 00000000..58cecfca
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/appearance/size/main.vue
@@ -0,0 +1,53 @@
+
+
+
+
+ Small size:
+
+
+
+ Medium size:
+
+
+
+ Large size:
+
+
+
+
+
+ Custom size:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/basic/main.js b/vue-options-api-demos/inputs/numerictextbox/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/basic/main.vue b/vue-options-api-demos/inputs/numerictextbox/basic/main.vue
new file mode 100644
index 00000000..3e22cb6f
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/basic/main.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+ Kilometers
+
+
+
+
+
+
+ Miles
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.js b/vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.vue b/vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.vue
new file mode 100644
index 00000000..2f33c893
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/custom-parse-format/main.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+ HEX
+
+
+
+
+
+
+ DEC
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/formats/main.js b/vue-options-api-demos/inputs/numerictextbox/formats/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/formats/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/formats/main.vue b/vue-options-api-demos/inputs/numerictextbox/formats/main.vue
new file mode 100644
index 00000000..0c206e83
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/formats/main.vue
@@ -0,0 +1,50 @@
+
+
+
Decimal
+
+ Percentage
+
+ Currency
+
+ Currency with format options
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/basic/main.js b/vue-options-api-demos/inputs/numerictextbox/forms/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/forms/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/basic/main.vue b/vue-options-api-demos/inputs/numerictextbox/forms/basic/main.vue
new file mode 100644
index 00000000..ace2740b
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/forms/basic/main.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+ Please fill in the fields:
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.js b/vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.vue b/vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.vue
new file mode 100644
index 00000000..ab5f5608
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/forms/custom-message/main.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+ Please fill in the fields:
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.js b/vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.vue b/vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.vue
new file mode 100644
index 00000000..b0b3e8cf
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/forms/disable-styles/main.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+ Please fill in the fields:
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/override/main.js b/vue-options-api-demos/inputs/numerictextbox/forms/override/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/forms/override/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/forms/override/main.vue b/vue-options-api-demos/inputs/numerictextbox/forms/override/main.vue
new file mode 100644
index 00000000..9656b17a
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/forms/override/main.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+ Please fill in the fields:
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+ Form submitted!
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/input-mode/main.js b/vue-options-api-demos/inputs/numerictextbox/input-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/input-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/input-mode/main.vue b/vue-options-api-demos/inputs/numerictextbox/input-mode/main.vue
new file mode 100644
index 00000000..0da4efe5
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/input-mode/main.vue
@@ -0,0 +1,52 @@
+
+
+
+
inputmode=numeric
+
+
+
+
+
+
+
+
inputmode=decimal
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/keyboard/main.js b/vue-options-api-demos/inputs/numerictextbox/keyboard/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/keyboard/main.vue b/vue-options-api-demos/inputs/numerictextbox/keyboard/main.vue
new file mode 100644
index 00000000..26de86a5
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/keyboard/main.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/predefined-step/main.js b/vue-options-api-demos/inputs/numerictextbox/predefined-step/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/predefined-step/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/predefined-step/main.vue b/vue-options-api-demos/inputs/numerictextbox/predefined-step/main.vue
new file mode 100644
index 00000000..b54813bb
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/predefined-step/main.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.js b/vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.vue b/vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.vue
new file mode 100644
index 00000000..e943f397
--- /dev/null
+++ b/vue-options-api-demos/inputs/numerictextbox/spin-buttons/main.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiobutton/appearance/main.js b/vue-options-api-demos/inputs/radiobutton/appearance/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiobutton/appearance/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/radiobutton/appearance/main.vue b/vue-options-api-demos/inputs/radiobutton/appearance/main.vue
new file mode 100644
index 00000000..23d017ac
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiobutton/appearance/main.vue
@@ -0,0 +1,49 @@
+
+
+
+
+ Small size:
+
+
+
+ Medium size:
+
+
+
+ Large size:
+
+
+
+ Custom size:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiobutton/disabled/main.js b/vue-options-api-demos/inputs/radiobutton/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiobutton/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/radiobutton/disabled/main.vue b/vue-options-api-demos/inputs/radiobutton/disabled/main.vue
new file mode 100644
index 00000000..b7ce62d7
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiobutton/disabled/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.js b/vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.vue b/vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.vue
new file mode 100644
index 00000000..6e3c9574
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiobutton/labels/custom-labels/main.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+ Right-to-left support
+
+ on
+
+
+
+
+
+
+
+ Right-to-left support
+
+ off
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.js b/vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.vue b/vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.vue
new file mode 100644
index 00000000..36f5957e
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiobutton/labels/setting-up/main.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiobutton/overview/main.js b/vue-options-api-demos/inputs/radiobutton/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiobutton/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/radiobutton/overview/main.vue b/vue-options-api-demos/inputs/radiobutton/overview/main.vue
new file mode 100644
index 00000000..49e5c5e9
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiobutton/overview/main.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiogroup/controlled/main.js b/vue-options-api-demos/inputs/radiogroup/controlled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/controlled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/radiogroup/controlled/main.vue b/vue-options-api-demos/inputs/radiogroup/controlled/main.vue
new file mode 100644
index 00000000..a1f237e9
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/controlled/main.vue
@@ -0,0 +1,65 @@
+
+
+
+ Control with v-model :
+
+ Control with value and change :
+
+
+
+
+
+ Current checked value is {{checked}}
+
+
+ Toggle disabled state
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiogroup/default-state/main.js b/vue-options-api-demos/inputs/radiogroup/default-state/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/default-state/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/radiogroup/default-state/main.vue b/vue-options-api-demos/inputs/radiogroup/default-state/main.vue
new file mode 100644
index 00000000..4f7529c8
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/default-state/main.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiogroup/forms/FormContent.vue b/vue-options-api-demos/inputs/radiogroup/forms/FormContent.vue
new file mode 100644
index 00000000..fc044241
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/forms/FormContent.vue
@@ -0,0 +1,131 @@
+
+
+
+
+ BOOK YOUR DREAM VACATION TODAY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+ Clear
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiogroup/forms/FormInput.vue b/vue-options-api-demos/inputs/radiogroup/forms/FormInput.vue
new file mode 100644
index 00000000..5070f7e3
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/forms/FormInput.vue
@@ -0,0 +1,83 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiogroup/forms/FormRadioGroup.vue b/vue-options-api-demos/inputs/radiogroup/forms/FormRadioGroup.vue
new file mode 100644
index 00000000..fc5f0ccd
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/forms/FormRadioGroup.vue
@@ -0,0 +1,94 @@
+
+
+
+ {{label}}
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiogroup/forms/main.js b/vue-options-api-demos/inputs/radiogroup/forms/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/forms/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/radiogroup/forms/main.vue b/vue-options-api-demos/inputs/radiogroup/forms/main.vue
new file mode 100644
index 00000000..798b6d8d
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/forms/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiogroup/keyboard/main.js b/vue-options-api-demos/inputs/radiogroup/keyboard/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/radiogroup/keyboard/main.vue b/vue-options-api-demos/inputs/radiogroup/keyboard/main.vue
new file mode 100644
index 00000000..2fe242df
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/keyboard/main.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiogroup/layout/main.js b/vue-options-api-demos/inputs/radiogroup/layout/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/layout/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/radiogroup/layout/main.vue b/vue-options-api-demos/inputs/radiogroup/layout/main.vue
new file mode 100644
index 00000000..8f630e98
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/layout/main.vue
@@ -0,0 +1,79 @@
+
+
+
Change the layout:
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/radiogroup/overview/main.js b/vue-options-api-demos/inputs/radiogroup/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/radiogroup/overview/main.vue b/vue-options-api-demos/inputs/radiogroup/overview/main.vue
new file mode 100644
index 00000000..1ecbba2a
--- /dev/null
+++ b/vue-options-api-demos/inputs/radiogroup/overview/main.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rangeslider/controlled/main.js b/vue-options-api-demos/inputs/rangeslider/controlled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rangeslider/controlled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rangeslider/controlled/main.vue b/vue-options-api-demos/inputs/rangeslider/controlled/main.vue
new file mode 100644
index 00000000..5c240493
--- /dev/null
+++ b/vue-options-api-demos/inputs/rangeslider/controlled/main.vue
@@ -0,0 +1,41 @@
+
+
+
+
+ {{ value }}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rangeslider/disabled/main.js b/vue-options-api-demos/inputs/rangeslider/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rangeslider/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rangeslider/disabled/main.vue b/vue-options-api-demos/inputs/rangeslider/disabled/main.vue
new file mode 100644
index 00000000..cb90daab
--- /dev/null
+++ b/vue-options-api-demos/inputs/rangeslider/disabled/main.vue
@@ -0,0 +1,27 @@
+
+
+
+ 1
+ 3
+ 5
+ 7
+ 10
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rangeslider/events/Logger.vue b/vue-options-api-demos/inputs/rangeslider/events/Logger.vue
new file mode 100644
index 00000000..7d9e1695
--- /dev/null
+++ b/vue-options-api-demos/inputs/rangeslider/events/Logger.vue
@@ -0,0 +1,45 @@
+
+
+
{{ title }}
+
+
+ {{ events.length - idx }}. {{ event }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rangeslider/events/main.js b/vue-options-api-demos/inputs/rangeslider/events/main.js
new file mode 100644
index 00000000..1f1c6c86
--- /dev/null
+++ b/vue-options-api-demos/inputs/rangeslider/events/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
+
diff --git a/vue-options-api-demos/inputs/rangeslider/events/main.vue b/vue-options-api-demos/inputs/rangeslider/events/main.vue
new file mode 100644
index 00000000..73dd6579
--- /dev/null
+++ b/vue-options-api-demos/inputs/rangeslider/events/main.vue
@@ -0,0 +1,54 @@
+
+
+
+ 1
+ 3
+ 5
+ 7
+ 10
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rangeslider/labels/main.js b/vue-options-api-demos/inputs/rangeslider/labels/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rangeslider/labels/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rangeslider/labels/main.vue b/vue-options-api-demos/inputs/rangeslider/labels/main.vue
new file mode 100644
index 00000000..e5b78833
--- /dev/null
+++ b/vue-options-api-demos/inputs/rangeslider/labels/main.vue
@@ -0,0 +1,21 @@
+
+
+
+ Day 1
+ Day 3
+ Day 5
+ Day 7
+ Day 10
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rangeslider/orientation/main.js b/vue-options-api-demos/inputs/rangeslider/orientation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rangeslider/orientation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rangeslider/orientation/main.vue b/vue-options-api-demos/inputs/rangeslider/orientation/main.vue
new file mode 100644
index 00000000..6ed22968
--- /dev/null
+++ b/vue-options-api-demos/inputs/rangeslider/orientation/main.vue
@@ -0,0 +1,39 @@
+
+
+
Horizontal RangeSlider:
+
+ 1
+ 3
+ 5
+ 7
+ 10
+
+
+
+
+ Vertical RangeSlider:
+
+ 1
+ 3
+ 5
+ 7
+ 10
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rangeslider/overview/main.js b/vue-options-api-demos/inputs/rangeslider/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rangeslider/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rangeslider/overview/main.vue b/vue-options-api-demos/inputs/rangeslider/overview/main.vue
new file mode 100644
index 00000000..c0b73caf
--- /dev/null
+++ b/vue-options-api-demos/inputs/rangeslider/overview/main.vue
@@ -0,0 +1,21 @@
+
+
+
+ 1
+ 3
+ 5
+ 7
+ 10
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rating/basic/main.js b/vue-options-api-demos/inputs/rating/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/basic/main.vue b/vue-options-api-demos/inputs/rating/basic/main.vue
new file mode 100644
index 00000000..ab7efb24
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/basic/main.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/rating/controlled/main.js b/vue-options-api-demos/inputs/rating/controlled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/controlled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/controlled/main.vue b/vue-options-api-demos/inputs/rating/controlled/main.vue
new file mode 100644
index 00000000..f6911540
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/controlled/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rating/disabled/main.js b/vue-options-api-demos/inputs/rating/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/disabled/main.vue b/vue-options-api-demos/inputs/rating/disabled/main.vue
new file mode 100644
index 00000000..d296eed5
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/disabled/main.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/rating/form-support/FormContent.vue b/vue-options-api-demos/inputs/rating/form-support/FormContent.vue
new file mode 100644
index 00000000..297a8e9f
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/form-support/FormContent.vue
@@ -0,0 +1,120 @@
+
+
+
+ Please fill in the fields:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Please rate your experience:
+
+
+
+
+
+
+
+
+
+ Submit
+
+ Clear
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rating/form-support/FormInput.vue b/vue-options-api-demos/inputs/rating/form-support/FormInput.vue
new file mode 100644
index 00000000..b69c4a21
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/form-support/FormInput.vue
@@ -0,0 +1,85 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rating/form-support/FormRating.vue b/vue-options-api-demos/inputs/rating/form-support/FormRating.vue
new file mode 100644
index 00000000..0cd38b44
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/form-support/FormRating.vue
@@ -0,0 +1,92 @@
+
+
+
+ {{label}}
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rating/form-support/main.js b/vue-options-api-demos/inputs/rating/form-support/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/form-support/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/form-support/main.vue b/vue-options-api-demos/inputs/rating/form-support/main.vue
new file mode 100644
index 00000000..cb5e3869
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/form-support/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rating/icon/main.js b/vue-options-api-demos/inputs/rating/icon/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/icon/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/icon/main.vue b/vue-options-api-demos/inputs/rating/icon/main.vue
new file mode 100644
index 00000000..ba5ccf57
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/icon/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/rating/item-customization/customItem.vue b/vue-options-api-demos/inputs/rating/item-customization/customItem.vue
new file mode 100644
index 00000000..f7f74352
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/item-customization/customItem.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/rating/item-customization/main.js b/vue-options-api-demos/inputs/rating/item-customization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/item-customization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/item-customization/main.vue b/vue-options-api-demos/inputs/rating/item-customization/main.vue
new file mode 100644
index 00000000..2d541bb2
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/item-customization/main.vue
@@ -0,0 +1,20 @@
+
+ Custom item
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/rating/items/main.js b/vue-options-api-demos/inputs/rating/items/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/items/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/items/main.vue b/vue-options-api-demos/inputs/rating/items/main.vue
new file mode 100644
index 00000000..9bcb86dd
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/items/main.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/rating/label/main.js b/vue-options-api-demos/inputs/rating/label/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/label/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/label/main.vue b/vue-options-api-demos/inputs/rating/label/main.vue
new file mode 100644
index 00000000..4ff31f2c
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/label/main.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/rating/navigation/main.js b/vue-options-api-demos/inputs/rating/navigation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/navigation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/navigation/main.vue b/vue-options-api-demos/inputs/rating/navigation/main.vue
new file mode 100644
index 00000000..f4950864
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/navigation/main.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/rating/precision/first-full/main.js b/vue-options-api-demos/inputs/rating/precision/first-full/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/precision/first-full/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/precision/first-full/main.vue b/vue-options-api-demos/inputs/rating/precision/first-full/main.vue
new file mode 100644
index 00000000..991fb0d8
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/precision/first-full/main.vue
@@ -0,0 +1,20 @@
+
+
+
Half Precision Mode First-item Full
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/rating/precision/first-half/main.js b/vue-options-api-demos/inputs/rating/precision/first-half/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/precision/first-half/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/precision/first-half/main.vue b/vue-options-api-demos/inputs/rating/precision/first-half/main.vue
new file mode 100644
index 00000000..beaa59e1
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/precision/first-half/main.vue
@@ -0,0 +1,20 @@
+
+
+
Half Precision Mode First-item Half
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/rating/precision/main.js b/vue-options-api-demos/inputs/rating/precision/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/precision/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/precision/main.vue b/vue-options-api-demos/inputs/rating/precision/main.vue
new file mode 100644
index 00000000..8e165bc5
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/precision/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
Item Precision Mode
+
+
+
+
Half Precision Mode
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/rating/readonly/main.js b/vue-options-api-demos/inputs/rating/readonly/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/readonly/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/readonly/main.vue b/vue-options-api-demos/inputs/rating/readonly/main.vue
new file mode 100644
index 00000000..2b30f917
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/readonly/main.vue
@@ -0,0 +1,16 @@
+
+
+
Readonly Mode
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/rating/selection/main.js b/vue-options-api-demos/inputs/rating/selection/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/selection/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rating/selection/main.vue b/vue-options-api-demos/inputs/rating/selection/main.vue
new file mode 100644
index 00000000..f5ff2357
--- /dev/null
+++ b/vue-options-api-demos/inputs/rating/selection/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
Continues Selection Mode
+
+
+
+
Single Selection Mode
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/rtl/main.js b/vue-options-api-demos/inputs/rtl/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/rtl/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/rtl/main.vue b/vue-options-api-demos/inputs/rtl/main.vue
new file mode 100644
index 00000000..f376f980
--- /dev/null
+++ b/vue-options-api-demos/inputs/rtl/main.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
RadioButton and RadioGroup
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/shared/CheckboxStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/CheckboxStyleConfigurator.vue
new file mode 100644
index 00000000..cb2341a7
--- /dev/null
+++ b/vue-options-api-demos/inputs/shared/CheckboxStyleConfigurator.vue
@@ -0,0 +1,80 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/shared/FormCheckbox.vue b/vue-options-api-demos/inputs/shared/FormCheckbox.vue
new file mode 100644
index 00000000..9c415a82
--- /dev/null
+++ b/vue-options-api-demos/inputs/shared/FormCheckbox.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/shared/FormInput.vue b/vue-options-api-demos/inputs/shared/FormInput.vue
new file mode 100644
index 00000000..47972c76
--- /dev/null
+++ b/vue-options-api-demos/inputs/shared/FormInput.vue
@@ -0,0 +1,94 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/shared/FormSwitch.vue b/vue-options-api-demos/inputs/shared/FormSwitch.vue
new file mode 100644
index 00000000..76da195a
--- /dev/null
+++ b/vue-options-api-demos/inputs/shared/FormSwitch.vue
@@ -0,0 +1,100 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/inputs/shared/InputStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/InputStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/inputs/shared/InputStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/shared/MaskedTextBoxStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/MaskedTextBoxStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/inputs/shared/MaskedTextBoxStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/shared/NumericTextBoxStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/NumericTextBoxStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/inputs/shared/NumericTextBoxStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/shared/RadioButtonStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/RadioButtonStyleConfigurator.vue
new file mode 100644
index 00000000..e00c2976
--- /dev/null
+++ b/vue-options-api-demos/inputs/shared/RadioButtonStyleConfigurator.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/shared/SignatureStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/SignatureStyleConfigurator.vue
new file mode 100644
index 00000000..ffdd6c08
--- /dev/null
+++ b/vue-options-api-demos/inputs/shared/SignatureStyleConfigurator.vue
@@ -0,0 +1,158 @@
+
+
+
+ Configurator
+
+
+
+
+ Color
+
+
+
+
+
+
+
+ Background Color
+
+
+
+
+
+
+
+ Stroke Width
+
+
+
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/shared/SwitchStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/SwitchStyleConfigurator.vue
new file mode 100644
index 00000000..c5b405da
--- /dev/null
+++ b/vue-options-api-demos/inputs/shared/SwitchStyleConfigurator.vue
@@ -0,0 +1,101 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Track Rounded Mode
+
+
+
+
+
+
+
+ Thumb Rounded Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/shared/TextAreaStyleConfigurator.vue b/vue-options-api-demos/inputs/shared/TextAreaStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/inputs/shared/TextAreaStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/shared/sample-signature.js b/vue-options-api-demos/inputs/shared/sample-signature.js
new file mode 100644
index 00000000..82d3e903
--- /dev/null
+++ b/vue-options-api-demos/inputs/shared/sample-signature.js
@@ -0,0 +1,2 @@
+export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEg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QIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg==';
+
diff --git a/vue-options-api-demos/inputs/signature/appearance/all-options/SignatureStyleConfigurator.vue b/vue-options-api-demos/inputs/signature/appearance/all-options/SignatureStyleConfigurator.vue
new file mode 100644
index 00000000..ffdd6c08
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/all-options/SignatureStyleConfigurator.vue
@@ -0,0 +1,158 @@
+
+
+
+ Configurator
+
+
+
+
+ Color
+
+
+
+
+
+
+
+ Background Color
+
+
+
+
+
+
+
+ Stroke Width
+
+
+
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/signature/appearance/all-options/main.js b/vue-options-api-demos/inputs/signature/appearance/all-options/main.js
new file mode 100644
index 00000000..3a6df88d
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/all-options/main.js
@@ -0,0 +1,4 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+
+createApp(App).mount("#app");
diff --git a/vue-options-api-demos/inputs/signature/appearance/all-options/main.vue b/vue-options-api-demos/inputs/signature/appearance/all-options/main.vue
new file mode 100644
index 00000000..3e8e11b7
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/all-options/main.vue
@@ -0,0 +1,70 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/appearance/all-options/sample-signature.js b/vue-options-api-demos/inputs/signature/appearance/all-options/sample-signature.js
new file mode 100644
index 00000000..82d3e903
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/all-options/sample-signature.js
@@ -0,0 +1,2 @@
+export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEg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QIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg==';
+
diff --git a/vue-options-api-demos/inputs/signature/appearance/color/main.js b/vue-options-api-demos/inputs/signature/appearance/color/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/color/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/appearance/color/main.vue b/vue-options-api-demos/inputs/signature/appearance/color/main.vue
new file mode 100644
index 00000000..e22f4aa8
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/color/main.vue
@@ -0,0 +1,83 @@
+
+
+
+
+ Brush color value:
+
+ rgb(37, 37, 96)
+
+
+
+ Background color value:
+
+ salmon
+
+
+
+
+
+
+ Brush color value:
+
+ #aafc58
+
+
+
+ Background color value:
+
+ orange
+
+
+
+
+
+
+ Brush color value:
+
+ #11dcab
+
+
+
+ Background color value:
+
+ lightblue
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/appearance/fill-mode/main.js b/vue-options-api-demos/inputs/signature/appearance/fill-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/appearance/fill-mode/main.vue b/vue-options-api-demos/inputs/signature/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..2f68baef
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/fill-mode/main.vue
@@ -0,0 +1,55 @@
+
+
+
+
+ FillMode: flat
+
+
+
+ FillMode: solid
+
+
+
+ FillMode: outline
+
+
+
+
+
+ Custom fill mode:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/appearance/roundness/main.js b/vue-options-api-demos/inputs/signature/appearance/roundness/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/roundness/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/appearance/roundness/main.vue b/vue-options-api-demos/inputs/signature/appearance/roundness/main.vue
new file mode 100644
index 00000000..a7bf938f
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/roundness/main.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+ Roudness:
+ small
+
+
+
+
+
+ Roudness:
+ medium
+
+
+
+
+
+ Roudness:
+ large
+
+
+
+
+
+
+
+ Roudness:
+ full
+
+
+
+
+
+ Roudness:
+ custom
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/appearance/size/main.js b/vue-options-api-demos/inputs/signature/appearance/size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/appearance/size/main.vue b/vue-options-api-demos/inputs/signature/appearance/size/main.vue
new file mode 100644
index 00000000..2406c9c3
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/size/main.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+ Size:
+ small
+
+
+
+
+
+ Size:
+ medium
+
+
+
+
+
+ Size:
+ large
+
+
+
+
+
+
+ Custom size:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/appearance/stroke-width/main.js b/vue-options-api-demos/inputs/signature/appearance/stroke-width/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/stroke-width/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/appearance/stroke-width/main.vue b/vue-options-api-demos/inputs/signature/appearance/stroke-width/main.vue
new file mode 100644
index 00000000..d6094922
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/appearance/stroke-width/main.vue
@@ -0,0 +1,52 @@
+
+
+ To see the Stroke width difference, draw something in the different Signature
+ components.
+
+
+
+
+ Stroke Width value:
+ 1.5
+
+
+
+
+
+ Stroke Width value:
+ 3.5
+
+
+
+
+
+ Stroke Width value:
+ 6
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/signature/controlled/export-scale/main.js b/vue-options-api-demos/inputs/signature/controlled/export-scale/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/controlled/export-scale/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/controlled/export-scale/main.vue b/vue-options-api-demos/inputs/signature/controlled/export-scale/main.vue
new file mode 100644
index 00000000..54d3e272
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/controlled/export-scale/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+ Signature value binding using value prop and change event
+
+
+
+
+ Signature value binding using v-model
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/controlled/export-scale/sample-signature.js b/vue-options-api-demos/inputs/signature/controlled/export-scale/sample-signature.js
new file mode 100644
index 00000000..82d3e903
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/controlled/export-scale/sample-signature.js
@@ -0,0 +1,2 @@
+export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEg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QIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg==';
+
diff --git a/vue-options-api-demos/inputs/signature/controlled/popup/main.js b/vue-options-api-demos/inputs/signature/controlled/popup/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/controlled/popup/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/controlled/popup/main.vue b/vue-options-api-demos/inputs/signature/controlled/popup/main.vue
new file mode 100644
index 00000000..1197e10e
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/controlled/popup/main.vue
@@ -0,0 +1,40 @@
+
+
+
+
Controlled Signature
+
+ Open
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/controlled/value/main.js b/vue-options-api-demos/inputs/signature/controlled/value/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/controlled/value/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/controlled/value/main.vue b/vue-options-api-demos/inputs/signature/controlled/value/main.vue
new file mode 100644
index 00000000..35d67f5d
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/controlled/value/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/controlled/value/sample-signature.js b/vue-options-api-demos/inputs/signature/controlled/value/sample-signature.js
new file mode 100644
index 00000000..82d3e903
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/controlled/value/sample-signature.js
@@ -0,0 +1,2 @@
+export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEgQIAAga0KCNy3OvPGTYAAAQIECBAgQIAAAQJbE8gLUT+0DNodH7O1VWK8BAgQINBLQODei8/NBAgQIECAAAECBAgQIEBg9gIJ2t+VknPX83nN9dO1/rmmsjoECBAgQIDAPwQE7lYCAQIECBAgQIAAAQIECBBYr8CXZWgfS6kN2nNO+7GU03pJjIwAAQIECIwnIHAfz1bLBAgQIECAAAECBAgQIEDgWQJflAfn+JhdZQd+LfUSzB8r66tGgAABAgQIvCAgcLcsCBAgQIAAAQIECBAgQIDAegT2ZSh5IWo+1lxN0J6w/ZeaG9QhQIAAAQIEXhcQuFsdBAgQIECAAAECBAgQIEBg+QK7MoTsaM/O9trru1LxWMql9gb1CBAgQIAAgbcFBO5WCAECBAgQIECAAAECBAgQWK7ArnQ9O9oPLYbww7W+oL0FmqoECBAgQKBGQOBeo6QOAQIECBAgQIAAAQIECBCYl0BegvqulK9KqX0haoL2YynneQ1FbwgQIECAwHoEBO7rmUsjIUCAAAECBAgQIECAAIFtCCRoT3BeG7T/fK1/2gaPURIgQIAAgecJCNyfZ+/JBAgQIECAAAECBAgQIECgjcCX1+B8V3lTXoiaHfCC9kow1QgQIECAQF8BgXtfQfcTIECAAAECBAgQIECAAIFxBfal+bwQ9bPKxyRo/3gtv1TeoxoBAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAgREEErAnaN+3aPu7Uje72gXtLdBUJUCAAAECQwkI3IeS1A4BAgQIECBAgAABAgQIEBhGYFea+bqUQ4vmPl2D9kuLe1QlQIAAAQIEBhYQuA8MqjkCBAgQIECAAAECBAgQINBRIC9BTdCeHeq11w+l4rGUc+0N6hEgQIAAAQLjCQjcx7PVMgECBAgQIECAAAECBAgQqBFI0P6ulATt+bzm+rlUOpRyrqmsDgECBAgQIDCNgMB9GmdPIUCAAAECBAgQIECAAAECLwl8Wb54LGVXyZOgPfVPlfVVI0CAAAECBCYUELhPiO1RBAgQIECAAAECBAgQIEDgKvBF+ZgXou4qRX4t9T5eixeiVqKpRoAAAQIEphYQuE8t7nkECBAgQIAAAQIECBAgsGWBfRl8zmnPx9rrvaC9lko9AgQIECDwXAGB+3P9PZ0AAQIECBAgQIAAAQIEtiGwK8PMjvbsbK+9visVj6Vcam9QjwABAgQIEHiugMD9uf6eToAAAQIECBAgQIAAAQLrFtiV4WVH+6HFMH8odfMC1R9b3KMqAQIECBAgMAMBgfsMJkEXCBAgQIAAAQIECBAgQGB1Ar8rI3p3Dc7zec2VoP1YyrmmsjoECBAgQIDA/AQE7vObEz0iQIAAAQIECBAgQIAAgWULZEd7dqjXBu0/X4P207KHrfcECBAgQICAwN0aIECAAAECBAgQIECAAAECwwh8eQ3Od5XN/Xqt/7GyvmoECBAgQIDAzAUE7jOfIN0jQIAAAQIECBAgQIAAgdkL7EsP80LUzyp7mqA9IXvKL5X3qEaAAAECBAgsQEDgvoBJ0kUCBAgQIECAAAECBAgQmKVAgvYcH5OPtdd3pWKOmxG014qpR4AAAQIEFiQgcF/QZOkqAQIECBAgQIAAAQIECMxCYFd6kaD90KI3n65B+6XFPaoSIECAAAECCxMQuC9swnSXAAECBAgQIECAAAECBJ4mkJeg5uiYNkH7D6X+sZTz03rtwQQIECBAgMBkAgL3yag9iAABAgQIECBAgAABAgQWKpCg/V0pOQomn9dcP5dKh1LONZXVIUCAAAECBNYhIHBfxzwaBQECBAgQIECAAAECBAiMI5Cg/VhKm6A99U/jdEerBAgQIECAwJwFBO5znh19I0CAAAECBAgQIECAAIFnCXx5Ddp3lR34tdT7eL2n8hbVCBAgQIAAgbUJCNzXNqPGQ4AAAQIECBAgQIAAAQJ9BPbl5pzT/lllI03QnrD9l8p7VCNAgAABAgRWKiBwX+nEGhYBAgQIECBAgAABAgQItBJI0P51KflYe31XKh5LudTeoB4BAgQIECCwbgGB+7rn1+gIECBAgAABAgQIECBA4G2BXfl2gvZDC6hPpW5eoCpob4GmKgECBAgQ2IKAwH0Ls2yMBAgQIECAAAECBAgQIHAvkJeg5uiYNkH7D6X+sZQzTgIECBAgQIDASwICd+uCAAECBAgQIECAAAECBLYkkKD9XSnZoZ7Pa66fr/W/r6msDgECBAgQILBdAYH7dufeyAkQIECAAAECBAgQILA1gRwd0zZoP5Z7TluDMl4CBAgQIECgm4DAvZubuwgQIECAAAECBAgQIEBgOQJflq4mON9VdvnXUu/jtfxSeY9qBAgQIECAAIHfCNwtAgIECBAgQIAAAQIECBBYq8C+DOxbQftap9e4CBAgQIDA/AQE7vObEz0iQIAAAQIECBAgQIAAgX4CCdpzfEw+1l7flYrHUi61N6hHgAABAgQIELgXELhbEwQIECBAgAABAgQIECCwFoFdGciHUr5oMaBPpW7OdRe0t0BTlQABAgQIEHhZQOBuZRAgQIAAAQIECBAgQIDA0gUStGdH+6HFQH4odY+lnFvcoyoBAgQIECBA4E0BgbsFQoAAAQIECBAgQIAAAQJLFfhd6fi7a3BeO4afS8WDoL2WSz0CBAgQIECgjYDAvY2WugQIECBAgAABAgQIECAwB4EmaM9RMPm85krQfizlVFNZHQIECBAgQIBAFwGBexc19xAgQIAAAQIECBAgQIDAswS+LA/+WEpt0P7rNWjPPS4CBAgQIECAwKgCAvdReTVOgAABAgQIECBAgAABAgMJJGg/lrKrbC9Be0L2lF8q71GNAAECBAgQINBLQODei8/NBAgQIECAAAECBAgQIDCywL60/6GUz1o857tSN8fNCNpboKlKgAABAgQI9BcQuPc31AIBAgQIECBAgAABAgQIDC+QoP3rUvKx9krQfizlUnuDegQIECBAgACBIQUE7kNqaosAAQIECBAgQIAAAQIE+grsSgPZ0f5Fi4Z+KHWzo/3HFveoSoAAAQIECBAYXEDgPjipBgkQIECAAAECBAgQIECgg0CC9uxoP7S4N0H7sZRzi3tUJUCAAAECBAiMJiBwH41WwwQIECBAgAABAgQIECBQIfC7UidBe3ao114/X+t/X3uDegQIECBAgACBKQQE7lMoewYBAgQIECBAgAABAgQI3AskaH93Dc7zec2VoP1YyqmmsjoECBAgQIAAgakFBO5Ti3seAQIECBAgQIAAAQIECDQ72muD9l8L2cdr2E6PAAECBAgQIDBbAYH7bKdGxwgQIECAAAECBAiMIrArrf6+lM9KSdi5v3lKvpfSXHkB5ftSHNsxylRsstEvy6iPd+vsLYgmaE/Y/ssmxQyaAAECBAgQWJSAwH1R06WzBAgQIECAAAECBFoJJFD/Yyn7UhKw52PbKyHnv5dyaXuj+gRuBNoG7bn1m1KOpQjaLSUCBAgQIEBgMQIC98VMlY4SIECAAAECBAgQeCjQBOxflJr7UnYP76ir8OdSzS73Oiu1/lkg6zDHx+Rj7fVdqXgs5VJ7g3oECBAgQIAAgbkICNznMhP6QYAAAQIECBAgQKCbwK7cll3sCdlTxrgE7mOorrvNfRle26D9h3LPoZTLummMjgABAgQIEFizgMB9zbNrbAQIECBAgAABAmsVyE72HNGRcDJHxYx9/ak84Dz2Q7S/CoFdGcWHUtr88idB+9EaW8X8GwQBAgQIENi8gMB980sAAAECBAgQIECAwIIEErKPuZP9NQr/f8OCFsmTupqgPTvaDy2e/1Op+5WgvYWYqgQIECBAgMDsBfwfzrOfIh0kQIAAAQIECBDYuECCzHfXIDM724e4sqP4ci0/lo95KeVfS3mp/U/l6212Kw/RP20sRyBrJkF7gvPa6+dS8VjKqfYG9QgQIECAAAECSxEQuC9lpvSTAAECBAgQIEBgawLNkTH7ngPPLuKE6udrubzQXsLPhKYvXc5v7zkBK709QXt+EZSgvfYXQYL2lS4GwyJAgAABAgT+V0DgbjUQIECAAAECBAgQmI9AE2IeSpd2Hbv1a7nv+2s5l4/Zvf7WlTPg//5KhQSkXfvRsftuW4BAs6O9NmjPmvxYynEBY9NFAgQIECBAgEAvAYF7Lz43EyBAgAABAgQIEBhEIKF3c2xMlwYTjN+G7LVtJDBN2L575QYvS62V3Ea9/NXF8Y31cq/QBO0J2x/94mcbgkZJgAABAgQIrF5A4L76KTZAAgQIECBAgACBGQt8XvqWIzn2HfrY7GRPmJkjY9peCdv/VkrC/peunPPepV9t+6H+/AXaBu0Z0TelHEsRtM9/fvWQAAECBAgQGFBA4D4gpqYIECBAgAABAgQIVAgk6E7QnjByV1H/vkpeYnoqJTva+1wJ2/evNJAwP30TlvYRXv69WR8fSnntlzIvjfC769q+LH/4RkCAAAECBAgQaC8gcG9v5g4CBAgQIECAAAECXQS6vGSyeU4C8FMp2c0+RJD5bWnn8MYgHCXTZYbXc8++DCXntOdj7ZW/iMiaGmJ91j5TPQIECBAgQIDA7AQE7rObEh0iQIAAAQIECBBYmcCujCfhZcLItldCzNO1tL33tfqPwvb35cbjUA/TzqIEspM9O9r3LXqdNZr1cm5xj6oECBAgQIAAgdUKCNxXO7UGRoAAAQIECBAg8GSBhJZtdwk3Xc6xHF3PZn9t2Nlh/9dS0q/Xrjz38GQ3j59eYHddq23mXtA+/Tx5IgECBAgQILAAAYH7AiZJFwkQIECAAAECBBYlkBdMJrjct+z1z6X+qZQE7UOfnZ6dywnbd2/0SdjecsJWUD3roe1fX2SdHq9rdQUEhkCAAAECBAgQGFZA4D6sp9YIECBAgAABAgS2KdDnRag/FbKE7KeR6L4o7eYYmfTxtSt9aPNizJG6qtmJBLIWErR/1eJ5gmpWyTgAACAASURBVPYWWKoSIECAAAEC2xUQuG937o2cAAECBAgQIECgv0CfF6GOfSTHrgwv53EncH/rSti+L2XoXfX9dbUwtECX9ZoX9uYXQsehO6M9AgQIECBAgMAaBQTua5xVYyJAgAABAgQIEBhbYFce0PYojqZPObol4eVlxE6+uz7jrV3tefynUg6lCNtHnIwZNN0naB/jiKMZkOgCAQIECBAgQGAcAYH7OK5aJUCAAAECBAgQWKfAvgyrOaO9zQibXcJjh5e70qkcH5N+Prq+KRXaHCnyqD3fn6dA7S9fmt5PtVbnqaVXBAgQIECAAIGeAgL3noBuJ0CAAAECBAgQ2IRAAuzsaM/HNlfOvW7OZx97F3n6d6zoXALVBO2nirqqLFcgvxjKeti1GMIUf33RojuqEiBAgAABAgSWJyBwX96c6TEBAgQIECBAgMB0As1u9n3LR479ItTb7qRv2dVeE6ymX4dSfmw5HtWXIyBoX85c6SkBAgQIECCwQgGB+won1ZAIECBAgAABAgR6C3QJLfPQsV+EejuwBOy1x8fkvvelHHvLaGCuAl3WbM7wz187XOY6KP0iQIAAAQIECCxNQOC+tBnTXwIECBAgQIAAgTEFuoSW6c+UR3HkBZg5Pqb2/PX8EiB17Wofc+U8r+39dT3kY+015S+GavukHgECBAgQIEBgFQIC91VMo0EQIECAAAECBAj0EEiA/Xkpx1J2LdrJWeinUnJG+6XFfX2q5hcCeV76/OhK/zKm1HetT2BfhtT2vQKC9vWtAyMiQIAAAQIEZiYgcJ/ZhOgOAQIECBAgQIDAZAIJrd+Vkt3fNQF207EE2QmxU8Z+EWrzzISrH0r5rFInweqhlEtlfdWWI5C1IGhfznzpKQECBAgQILAxAYH7xibccAkQIECAAAECBP47XO8StP9c7juWcprQMAF7gvaErDVX+phfIHxfU1mdRQlkDbQN2p+xZheFqrMECBAgQIAAgaEFBO5Di2qPAAECBAgQIEBgrgJLCtp313D1UInZ7Lo/VtZXbTkCgvblzJWeEiBAgAABAgR+I3C3CAgQIECAAAECBNYusKSgPX3NjvbaoD1zN+ULW9e+VuY0PkH7nGZDXwgQIECAAAEClQIC90oo1QgQIECAAAECBBYn0DVoz/nnOZ99ymNZuvTVCzAXtySrOrwrtXJ0zKGq9j8qOTqmBZaqBAgQIECAAIExBQTuY+pqmwABAgQIECBA4BkCXcLr9PNZAXbC1TYvbs3xMal/egauZ44msCsttw3an/EC39EANEyAAAECBAgQWIOAwH0Ns2gMBAgQIECAAAECjcCX5ZNjKQkva69nBe1t+ypcrZ3RZdXLWhW0L2vO9JYAAQIECBAg8KqAwN3iIECAAAECBAgQWINA2/A6Y15K0J6+vi8lx9z8sobJMob/FtiVImi3GAgQIECAAAECKxMQuK9sQg2HAAECBAgQILAxgbUH7V6Iur4FLWhf35waEQECBAgQIEDgfwQE7hYDAQIECBAgQIDAEgXWHrR/KpOSc9ovS5wcfX5R4LPy1XelHFr4OEaoBZaqBAgQIECAAIE5CAjc5zAL+kCAAAECBAgQIFArsC8VP5SS8LL2WtLRMc/qa62leu0FsmZzdEw+1l6C9lop9QgQIECAAAECMxMQuM9sQnSHAAECBAgQIEDgRYEuoeWzwusl7b633MYT6LJmBe3jzYeWCRAgQIAAAQKTCAjcJ2H2EAIECBAgQIAAgY4C2cmeHe0JL2uvn0rFHMdyrr1hoHqC9oEgF95M1qod7QufRN0nQIAAAQIECHQVELh3lXMfAQIECBAgQIDAmAK7a2h5aPGQn0vdYymnFvf0rfq70sDn1+emz7XXs3bf1/ZPvfYC+YVL1uu+xa12tLfAUpUAAQIECBAgsAQBgfsSZkkfCRAgQIAAAQLbEdiVoWZ3cILL2utZQXtegJmd9Anday9Be63Ucup1+csGQfty5ldPCRAgQIAAAQKtBATurbhUJkCAAAECBAgQGEkgoXXbAFvQPtJkaPahQNe/bBC0P6RVgQABAgQIECCwbAGB+7LnT+8JECBAgAABAksX6BK0J7Q8lvJxwsF36We6Z0f7hJM0waO6rgNB+wST4xEECBAgQIAAgTkICNznMAv6QIAAAQIECBDYpkDbozieEVp2DVgF7eta07synLZHHUXgGWt2XfJGQ4AAAQIECBBYmIDAfWETprsECBAgQIAAgRUI7MsYvi0lIWbt9b5UzI72X2pvGKBefiGQZzqjfQDMhTaRtdq8DLXNEJrjjr6feM226aO6BAgQIECAAAECIwgI3EdA1SQBAgQIECBAgMCLAgkvs0s4H2uv70rFYymX2hsGqNd2530eaUf7APAzaqIJ2dus1XT/Ge8VmBGbrhAgQIAAAQIECAjcrQECBAgQIECAAIGxBXblAW2P4xC0jz0r2r8XyF8yJGj/qpSs2TZXfuFyupY296lLgAABAgQIECCwMgGB+8om1HAIECBAgAABAjMSSID5oZRDiz49Y6f4/trPz2bezxbdU7WFwK7UfXddp22OD8ojnrFeWwxNVQIECBAgQIAAgakFBO5Ti3seAQIECBAgQGD9Al1eNPpTYcnO4vOEPPvyrLZH3AhYJ5ygkR+V+U/Q/kWH5zzjLzA6dNMtBAgQIECAAAECUwsI3KcW9zwCBAgQIECAwLoF2r5o9BlnXu/KFOSlrQlcay9Be63U/Os1x8a0+YuGjOrXUk6l5EW6l/kPUw8JECBAgAABAgSeISBwf4a6ZxIgQIAAAQIE1iewL0NKiL2rHFrCy+M1vKy8pXe19K3tWfLP2Hnfe6Aa+BeBzH0TtLc9Nia/FErIfirlF7YECBAgQIAAAQIE3hIQuFsfBAgQIECAAAECfQSySzjntO8rG0nQnvAyZarwMgFrgvYcWVN7PWPnfW3f1KsXyLpM0H6ov+V/anoRagc0txAgQIAAAQIEti4gcN/6CjB+AgQIECBAgEA3gV25re1u8anPve5ylrygvdt6mNtdXY+NyTiyTk+lnOc2KP0hQIAAAQIECBCYv4DAff5zpIcECBAgQIAAgTkJdAmxs1P4UMplwoHkZZjHUmqPD2l23uce1zIFdqXbXY+NcT77MudcrwkQIECAAAECsxMQuM9uSnSIAAECBAgQIDBbgbYvRH3Gi0bTx4TmCV9rrmcccVPTL3XqBfalatdjY5q/aPi+tDHVEUf1I1OTAAECBAgQIEBgcQIC98VNmQ4TIECAAAECBCYXSKDZ5oWozziWpW0fg/hNKUdB6+TraYgH5i8XPr/O365Dg/llUN4jkKDdRYAAAQIECBAgQGAwAYH7YJQaIkCAAAECBAisTqDrC1GPE0rsy7Nylnw+1l5TnyVf2y/1HgvsrvP9RflYe1xQ02r+miEBe9bn5fGj1CBAgAABAgQIECDQXkDg3t7MHQQIECBAgACBtQskyPxQyqHFQKfeLb679jHBa+31jLPka/um3tsC2c3+VSn7DlD5i4vsZj+V4tiYDoBuIUCAAAECBAgQqBcQuNdbqUmAAAECBAgQ2IJAdosn2KzdPfzpWv8yEc6uPCd9PLR43jPOkm/RPVVfEchcN2ez5/O2l2Nj2oqpT4AAAQIECBAg0FtA4N6bUAMECBAgQIAAgVUItH3Z6NQhdn4B8K6UYwvt7Gw+lHJucY+qzxfYly50fQmqY2OeP396QIAAAQIECBDYtIDAfdPTb/AECBAgQIAAgf8+oqPNGehTvxC1Cdrb7Lqfuo+WUX+Bvi9BbeY8Z7Q7Nqb/fGiBAAECBAgQIECgo4DAvSOc2wgQIECAAAECCxfYXYP2Q+U4snM452AfK+sPUS27nPPM2uNtntHHIca55TbyYt785UKXl6DGLS/APZVy3jKisRMgQIAAAQIECMxHQOA+n7nQEwIECBAgQIDAFAJddown1MwO86l2Drc93qYJ2hPOT9XHKeZqzc9ojozZdxhkdrMnZE+5dLjfLQQIECBAgAABAgRGExC4j0arYQIECBAgQIDA7ATaBtk5p/0wYai5L8/6UEp2PddeU/8yoLZf6v2rwK58KbvZs6Zq/2rhtpWsx9O18CVAgAABAgQIECAwSwGB+yynRacIECBAgAABAoMK7Etrbc9pTyh6HrQXrzfWtn9pKUH7sZTLRH30mO4CfXazNy9BzV8v/Ni9C+4kQIAAAQIECBAgMI2AwH0aZ08hQIAAAQIECDxDYFcemqD9UPnwhJvHUhJuTnFlJ3t2tO9bPCy7nHO8jfC1BdoTqmbtNUF7Pm97eQlqWzH1CRAgQIAAAQIEZiEgcJ/FNOgEAQIECBAgQGBQgS7ntH9TenAsZYoz0BPAtvlFQHAStKd/50GlNDa0wOelwUMpeQlql8tLULuouYcAAQIECBAgQGA2AgL32UyFjhAgQIAAAQIEBhFoe077p/LU7Bi/DPL0txvZlW+3Ddqz0zn9+36C/nlEN4HMa9/d7KfShpfedvN3FwECBAgQIECAwIwEBO4zmgxdIUCAAAECBAj0EGh7PMtP1yD73OOZtbdmx32C9gTntVdzpMip9gb1Jhfou5s9v+zJ/PplyuRT54EECBAgQIAAAQJjCQjcx5LVLgECBAgQIEBgGoGE2TkH/VD5uJzTnuA7QefYV5ejbaY+R35sg7W1vysDGmI3e9bfZW04xkOAAAECBAgQIEBA4G4NECBAgAABAgSWK9DsGk+wXXO9L5WmOLaja9Cevk3Rvxordf5ZoO9u9pzBf7oWtgQIECBAgAABAgRWKyBwX+3UGhgBAgQIECCwYoG8kDK72neVY0zYeSjlUlm/azVBe1e5ed6X+cxu9vxFRO1aux1J/lrhVEp+iTL22punoF4RIECAAAECBAhsTkDgvrkpN2ACBAgQIEBgwQIJPb8tZV85hpyDfijlXFm/T7UEswlWa3fb51nflXIs5dLnwe4dXCDrqzk2pkvjdrN3UXMPAQIECBAgQIDAKgQE7quYRoMgQIAAAQIEVi7Q9qWjU56DnmA2ofmuxRwI2ltgTVQ189fnbHa72SeaKI8hQIAAAQIECBCYt4DAfd7zo3cECBAgQIAAgbY7x7+5BuC/jEwnaB8ZeKLm+57N/lPpZ/6y4TRRfz2GAAECBAgQIECAwKwFBO6znh6dI0CAAAECBDYssC9jzzntn1UaTHVOe5egPX07lnKuHItq4wpkTTW72dscAdT0KrvZvy8lQfuP43ZV6wQIECBAgAABAgSWJSBwX9Z86S0BAgQIECCwfoFdGeLXpRwqh5pz2vNSywSgY16C9jF1x28766rZzV77S5z7XjW72bPWxv4LivFFPIEAAQIECBAgQIDACAIC9xFQNUmAAAECBAgQ6CiQoD3hec2u4+wyzg7jY8dn1d4maK+Vml+9rKOE7F9cS5ce2s3eRc09BAgQIECAAAECmxUQuG926g2cAAECBAgQmJFAAtEcH7Or7NMULx0VtFdOxgyr3YbsNb+8eWkIdrPPcGJ1iQABAgQIECBAYP4CAvf5z5EeEiBAgAABAusVSMD+bSn7yiFOcRa6oL1yMmZWre+57BlOdrOfrsXZ7DObYN0hQIAAAQIECBBYhoDAfRnzpJcECBAgQIDAugSy67g5PqZmZAlCc9RMwtAxrubokWNpfNfiATk/PveM1a8WXdlk1SZkz19ItJm3e6xP5Qs5l908bnIZGTQBAgQIECBAgMCQAgL3ITW1RYAAAQIECBB4LJAd5Dl7vfaoj/fX+mO8pDJ9eFdK7bnxzegE7Y/neawau9Jw35efpm+Zw6zDBO2XsTqrXQIECBAgQIAAAQJbExC4b23GjZcAAQIECBB4lsC+PDi72vOx5srxMYdSLjWVW9YRtLcEe3L1zFd+UZP1kF3tXS9HxnSVcx8BAgQIECBAgACBSgGBeyWUagQIECBAgACBjgIJS/NC1ISlNVd2HqfuuaZyyzq7Uj872tN+7Q77PMKO9pbQA1RvjvnJcTEpXa+E7NnF3pSu7biPAAECBAgQIECAAIEKAYF7BZIqBAgQIECAAIGOAs057TXhdoLRHPFx7Pist27blW+mL4eWbf907dOp5X2qdxdojovpE7Ln6c257AnaxziOqPsI3UmAAAECBAgQIEBgxQIC9xVPrqERIECAAAECTxPYlyd/W8qusgfflXo5R33oYDT9yI72tuFtjrM5lnKu7L9q/QQyTzkyJvNU88uZ156WX5CcrmXotdRvhO4mQIAAAQIECBAgsBEBgftGJtowCRAgQIAAgUkEduUpOT6mNuBOQJqg/Txw75rzvvct2xW0twTrUT1rpZmnfN71akJ2Lz/tKug+AgQIECBAgAABAgMKCNwHxNQUAQIECBAgsFmB5iWkx0qBHB+ToP1UWb+mWvNizbS7q7nhpo6gvSVYx+rNueyZoz4vP82Z+gnYs35+7NgXtxEgQIAAAQIECBAgMIKAwH0EVE0SIECAAAECmxLIbvbsat9VjvqbUu9YylBHfuS5XV6Emu7mKJucGy+0rZy8jtVyLnvWyaHj/bmtefmp+eqB6FYCBAgQIECAAAECYwsI3McW1j4BAgQIECCwVoFdGVjOad9XDjC7yLOzeahwO8/tcj57upug/VjKpbLvqrUXyProe2RME7JnN3uKiwABAgQIECBAgACBmQsI3Gc+QbpHgAABAgQIzE4gx4J8XUrC85orx3+k7lCBaULcLkeSJLzN7uhTKZeajqvTSaDr+fm3D/t0XS+ZKxcBAgQIECBAgAABAgsSELgvaLJ0lQABAgQIPFFgV579+xeen6+n3F+vff22XoLrPudYp63sFr89miWf3+4gv/3vBN+XnoYJUxNap++PribgTv2+x8fkec2xMS95v9WXjLsJ2vv249GYt/r9zEnXY30as7z8NPOUX8yYp62uJOMmQIAAAQIECBBYvIDAffFTaAAECBAgQOChwB9varwUcu/vWhgiCH/YqSdXuA3qz9e+NB8TfN4HnvnFQM5pv7d6bRjZoZxd6Jee49yV+7Ob/tChnRxhc7qWDre7pUIgZ7Nnbr6oqPtSleblpwna+66Vjl1wGwECBAgQIECAAAECQwoI3IfU1BYBAgQIEBhPIIHvb6/N3wfi+d7tjuv9eN3YVMsJQJsQtNY0AeqhlHNPqQS5Cexrn3v7uJzPfhqgDz2HsNrb87PWHOuz6zDK5lx2c9QBzy0ECBAgQIAAAQIE5i4gcJ/7DOkfAQIECKxR4DY8vw3Lbz/fwi7ztc1tgu5Dj0FlzhO0H0tpG+QmxE2Aa6d0jwl4cGvmJH9tkN3sNUcK3TfX/MWBI2PGmyMtEyBAgAABAgQIEHi6gMD96VOgAwQIECCwAoHbI1v2N+N57fMVDNkQXhHIUTQ5ruZ8LQlZH127UqHr+d/OZ3+k2//7ff7awC9C+vtrgQABAgQIECBAgMCiBATui5ounSVAgACBiQSye/UP12clDE3Jdfv5/TEuE3XNYxYocCp9zu73813f9+W/E7R3Of87QX7zgs0Fksy+y33+2iCDyxn+mffsZncRIECAAAECBAgQILAhAYH7hibbUAkQIEDgN81RLrfHteyKS0quPaNXBbJTNzu3769L+UJK7ddv6zW7wfuw3//i4/4ontv5vT3Kp88zu957Ljf+uZRmx3T60/ZKcJ+g/aW5aNuW+v8qkPXS9a8N7Ga3oggQIECAAAECBAgQ+I3A3SIgQIAAgTUINEe63IatTRDrLPTf/Ob+WJMEv7dXwtuE37fXfZ01rJPbMeyv/3EoH/MCzDlfCXITsqfcz9Oc+72kvmU9ZB1kPbS9frrOzantjeoTIECAAAECBAgQILA+AYH7+ubUiAgQILAmgSZI35VBpeTaXz/efm1NY35tLDmr+3LzzfPN5/eB+UsB+haM2owx6+dDKbXHuTS/tLg9bqjN87rUFeR2UWt3TxOyN/+utLk7f21wKuX2Z7HN/eoSIECAAAECBAgQILBCAYH7CifVkAgQILAQgSZMb3aiJwBN2cKO9Nvw/FLGnJLr/ogVQd44i/nr0uxX17X26AnZXZ66p7uKzXrdX9dt/vv25bmP2n3r+zn/O7vZzX8fxdfv7XM+e/PXBlkPzc/tOL3UKgECBAgQIECAAAECixQQuC9y2nSaAAECsxfYWpiencjNUR+3u8tf+3z2E7jSDu7LuL4tZVc5vm9KvePN3D66Le222TV/257zvx/p9v9+gvacz177y5bbJ/prg/7+WiBAgAABAgQIECCwCQGB+yam2SAJECAwqMBWwvTmCJHbXee3n1+Kaopr/gK70sU2QXjm/tBifvelbtfzv/PXDsdSvi/F+ezjrKXMf/6qIXPa9vLXBm3F1CdAgAABAgQIECCwcQGB+8YXgOETIEDgTqA5n7o51uX+49LBbo9yaXaf34bozj5f+gz/c/+bHc3HymFlfWT3c8LvR1efY0nSdkL9HBtT86xHffH9lwV25ctdgnZ/bWBFESBAgAABAgQIECDQWUDg3pnOjQQIEFikwFoD9dsjXc7XmbmUjym5mq8tctJ0upNAXoaaXe27yrvfl3oJwB/tMk97OZbkUEp+ntpe2TGdUL9Zm23vV/+xwL5USdCej22u/MIla+BUsQ7atKsuAQIECBAgQIAAAQIbEhC4b2iyDZUAgU0IrC1Qb4L0l3ah335tE5NrkFUCu1Ir57Tvq2r/Y6f5oZTLg/qfl+8nKK9t96XmsnM6/XsU6ld2XbU7gcxNl6Dd+eyWEgECBAgQIECAAAECgwkI3Aej1BABAgQmEVhToN6E6Qk6U24D9PMkmh6yJoExjo/ZFaDmbPZ83vfKLvpj30bc/y8C+/KVLkF7ftmS+fDvjUVFgAABAgQIECBAgMBgAgL3wSg1RIAAgcEEmlB9V1pM+ayUfC2h0lIuYfpSZmod/WxzfEx2mefYkOMbQ8/PWo6NSbtDXTmuJD/PruEEMk9dgvbvrvN/Ga4rWiJAgAABAgQIECBAgMA/BATuVgIBAgSeI5Dg7fel3IbpzQtKn9Oj+qcK0+ut1BxXID9HbY6Peev89Pz8ZTd7jo1Ju0Nf/14azEt5Xf0F9qWJtkG7F6H2d9cCAQIECBAgQIAAAQIVAgL3CiRVCBAg0FEgYfpvS0k41ITpSwjVm0D9fB33/ceOHG4jMJhAl+NjDuXpzVq+7Uh+PptjY7p0MCH+H0rZvXHzf5TvZVe9q59A5qpL0B77mhfi9uuduwkQIECAAAECBAgQIFAEBO6WAQECBPoJ/PF6e4KgJkzflc9T5no1gXp22zbnpt9+nGu/9YtABBKOJzzNz9uj67XjY/Lz2eds9qbd70s7OXrm8EZHcnzJW99/NAbf/8e/p23+kiFmzRwJ2q0gAgQIECBAgAABAgQmFRC4T8rtYQQILFQgYU9z/Es+z8715iiYOQ5JoD7HWdGnvgL5mftQyr6yofvjYxLQf17KoUUb94/KSzZP15L2/nb9t+C1LuVnMf3NL7Rc7QXy7212tGfOaq+clX8sJb8M4V6rph4BAgQIECBAgAABAoMJCNwHo9QQAQIrEMhu9WaX+u3Z6nMbmkB9bjOiP2MK5GcyoWvOVq+5ErgeSjlfK+/Lx+xm/+L6813Txm2d7JROeHss5XL9Rv59SNj+1i57YXtb6f+t3/bIoNzZBO2n7o91JwECBAgQIECAAAECBPoLCNz7G2qBAIFlCSTIyXnLt4H6rvx3ypyu7KS9P+7lUr6W4iKwFYG2x8ccC0yOEMnPc58jY+KbwDxt3e+UTvif57x1Cdu7r9Ac0RPfmiOD8hRBe3drdxIgQIAAAQIECBAgMIKAwH0EVE0SIDALgdtgfVd6lIB9P4ue/W8nbkP1S/lyyo+lOAZhZhOlO5MLtD0+JuekH0vJX6lkJ3tKl6vZzZ6gPT+Lt1f+Hak5Rzx9yW58P8ftZiD/Psc3zjXXa+fz19yrDgECBAgQIECAAAECBEYTELiPRqthAgQmFEg4l13rCWoS2uRjbWgzZjcTCCW0u1xLE6afx3yotgksWKDt8THZSd4c7XLoMe7XdrM3TSbATxj8aNf1N6VO7dE3Pbq7qlvzb3XNLzKaQXsZ6qqm32AIECBAgAABAgQIrE9A4L6+OTUiAmsWSDCTl5fuS0nInv/Ox2deOc7gUsp9mH5+Zqc8m8ACBdocH9MML7vIH4Xgr1HkZzfHxWQ3e36GX7rSdsLgmh3zfyn1Tgt0f1aXY9scH1Pbh/fX+fLXA7Vi6hEgQIAAAQIECBAgMLmAwH1ycg8kQKBSIEdD3Ibq+bxrsFb5yDer5fiXy7U0u9bvj5wY4jnaILA1gbbHx/T1yZEvCdpT3rpqfwGQ4D6BvH8P6mdmX6q2OT6mOTIo/wa7CBAgQIAAAQIECBAgMGsBgfusp0fnCGxGoDkSJiFMPn/WrvXb3eoJdm6Pg9nMZBgogYkE2h4f06dbj46MuW17V/6j9oiTT6XuoRQ7rutmJ3P+4WpWc0d+0Xks5VxTWR0CBAgQIECAAAECBAjMQUDgPodZ0AcC2xJowvUmWN8/YfgJ3y6lJFC/PwrmCd3xSAKbE6jdPd4HJmd9n66lZvd52yNO/qO0neNoXHUC+SuAmnPw01p++flVKY/+CqHuyWoRIECAAAECBAgQIEBgQgGB+4TYHkVggwLPDtfvg/Vmx/oGp8KQCcxCYOzjYxKyN8fFtAlr8wuAYym7CqX8u3IopSbEr2huE1XilbD90dW8EDVz4SJAgAABAgQIECBAgMAiBQTui5w2nSYwS4HsDs256/tSEqrl41RXQpqEX+dSLteSz10ECMxDYOzjY3K0SwL2U8vh5t+pr1v8e5WXdh5bPmPr1Q8FoCZszxxmV3v+DXcRIECAAAECBAgQIEBgsQIC98VOnY4TeLrA7bnrCa12E/WoeXlpcxxMcyTMRI/3GAIEWgqMdXxME7InaG973uQL5wAAIABJREFUhnr+vUrQfqgci13tlVB31eL7KGx3fEw3W3cRIECAAAECBAgQIDBTAYH7TCdGtwjMUOB+93p2rI553e5ab46CcYTDmOLaJjCswL4012b3eM3T8wu3UyldQva03/acdkec1MzKy3XyS9m/Xc1fa+Wb8o1jKW1/YdK9V+4kQIAAAQIECBAgQIDAyAIC95GBNU9goQK70u8/lLK/lgQnY1734bqz1sfU1jaBcQTy70Z+MZeXY+bfjqF+KZeQvTmX/dKx603QniNLavvliJOO2Nfb/l4+vva/Hfk3P+vk3O8R7iZAgAABAgQIECBAgMD8BATu85sTPSLwDIEEUJ9fQ7IEZbsROyFcHxFX0wQmFBjrWKn8G5EgtgnZ++5+bvNC1PDliJPDtQ8Tcq7qUR/LaN69MqLMb/53xl8srWrKDYYAAQIECBAgQIAAgUZA4G4tENiuwG3APtYOduH6dteXka9PYMxjpfJvRROw5+MQV9ugPX04lpKw2NVdYF9uzVEyL10xzv/eXLo3704CBAgQIECAAAECBAjMW0DgPu/50TsCQwrsSmPNcQ/5U/4xrrxYMLsWz9ciVBlDWZsExhfIX73k34uEo/trGfqp2UmecP10/XdjqPbT3w/Xvte2+b5UTNDedzd97fPWXC9he+bgpevP1zlf8/iNjQABAgQIECBAgACBjQsI3De+AAx/9QK7MsLsZD+UMsYu9pytfC6lCdmFVatfUga4UoH8W3G7g32Mfy9uj4rJvxuXgS33pb22L2n9rtxzHKEvAw9tMc3lf2u+faW3ORN/rF/2LgZIRwkQIECAAAECBAgQWL+AwH39c2yE2xNozmNPsDFkuNGEZQnKmoB9e7pGTGAdAvfh+m7EYSXUzu7xsc7s3pe22wbt+WXhsZT8e+YaTuA/S1MvraX870e+7peyw1lriQABAgQIECBAgACBmQoI3Gc6MbpFoINAwoyETgnZE7r3vXI8zLmUJly/9G3Q/QQIPEUgu9Wb42Hy+Ri7118aWP4N+er678gYA99f/83Lx9pL0F4r1b5e/rfnr6/c9pfy9VP7Jt1BgAABAgQIECBAgACB5QkI3Jc3Z3pM4F4gYdO7UvruZs95yudrybnKdiJaawSWJ5Aw/Q+lNMF6/n2Y+hr75aMZU9sd7fn37VjKaWqMDT0v/7uRI8zur9jvNuRgqAQIECBAgAABAgQIbFxA4L7xBWD4ixZIgJHQ6dBxFLdHxJxLG2Md99Cxe24jQOCBQP4NaML1ffk8IfsQf93SBz7Hx2RX+xi/sMsYBe19Zmfce//rlebtbh/XXesECBAgQIAAAQIECMxMQOA+swnRHQKVAodS70OHcC0he3YhNqXycaoRIPBkgWbn+q70Y1/KHML1W5Ixj4/JeAXtT16ADx7/1nEy/m/Nec+d3hEgQIAAAQIECBAgMLCA/ydoYFDNEZhA4NvyjEOL5wjZW2CpSuDJAtmhnl3rCZl3pUx95vq5PPP3pdQeUTXm8TExaBu0pz95QWvKGLvsn7w8Zvv443Wu7juYM/Mzjy4CBAgQIECAAAECBAhsRkDgvpmpNtCVCLwWarw0vBztYCf7SibeMFYpkDA94XY+JpScctd6ztXOMVIp52vZlY/5hV76UnONdXxMni9or5mB+dR57X+b3pcu5nsuAgQIECBAgAABAgQIbEZA4L6ZqTbQFQgkjPt7xTi+uQYcdndWYKlCYAKBP5Zn7K4lP8f5PB+nurLruwnWm4+3/z5kV31evHys7NBYx8fkhZs5/31f2Y9Us6O9BdaIVbN28kuS+0vgPiK6pgkQIECAAAECBAgQmKeAwH2e86JXBF4SeC3QeKR1fqFCQrf7QP6lr+U4ABcBAo8FdqVKs1s9nzdHwSTMnvrKz+3t7vXLGx3I0TF5H0T6/Oga6/iYL8uD8+9bTR+aPgraH83WtN/P/AncpzX3NAIECBAgQIAAAQIEZiogcJ/pxOgWgRcEXgs0psY63z0wwX3CvdvrUv4j5fbKERb3X5u6755HoI/ArtycUD0fU5ojYPZ9Gu15b3ab3+5ev/9ZfK359P/Zx8cI2ntO/oxuP5a+CNxnNCG6QoAAAQIECBAgQIDA8wQE7s+z92QCbQUSkCVM+23bG2dc/1L6lnJ71X6tOSZjxsPTtYUJ5GfsNlDPf9+WZw7n9liY/Iw0O9jb9mkOx8cI2tvO2vzrH0sXBe7znyc9JECAAAECBAgQIEBgAgGB+wTIHkFgQIHsqM2LUBMKul4WOL/w5Uv5Wsr99VLd1HGUzvpW1+7m56bZmZ6v3Za5jDq71rNeb3euD/FOhmcfH9MlaM9fxnws5VTKEAZzmeO19eNYBiRwX9usGg8BAgQIECBAgAABAp0EBO6d2NxE4OkCzYsF85JB1zQCLx2d0zz5/EoXLuXrKS9dCVUFiP3mLru1/3BtYlc+puRqAvV8P5/P9Wp2rTe71bNWXltLfcYQlzbHx3wq9Q8Drc9mR33+zWpznn2C9mMppz4Dd+9kApkrgftk3B5EgAABAgQIECBAgMCcBQTuc54dfSPwWKAJFPelahMy5uOajp15rLDOGucHw3r0/dz+1i8J3mp+6B3+u/Kwmr/KyDq+vZo13Xwt7aQs7WreX5A5a+YkIfvYv3Bpe3xM+nkopWZtPZoDQfsjoXV9/1iGI3Bf15waDQECBAgQIECAAAECHQUE7h3h3EZgQQL7F/pa+7U/Lmicukrg2QL5RcXlWhKo5/N8fMbV9viYHNtyHKCjgvYBEBfYRNaOwH2BE6fLBAgQIECAAAECBAgMLyBwH95UiwTWLPDSER27MuCU2+ulr9l5v+aVsZ2xNbv/z2XIzW71S/k8ZQ5XfvbaHh+T41769r9r0J6jlRL2n+aApw+dBY7lToF7Zz43EiBAgAABAgQIECCwJgGB+5pm01gILE/g/siQjKD2awkWa44pWZ6KHj9T4DZQTz/O1840H5/Zt0fPTuBZe1b6UMfHdA3a43y88X00Nt+ft0DmUuA+7znSOwIECBAgQIAAAQIEJhIQuE8E7TEECEwmsH/hSbvytZT766W6CRCbF3FO1mkPGl2geUFpHnS5lnx+vj65+Th6R0Z4QNZxdrW/tMbvHxeHoY6PeVfaOpbS5mWogvYRFsAMmsw6ELjPYCJ0gQABAgQIECBAgACB5wsI3J8/B3pAgMAyBF46Tic9f+3r+V4C0JSXLkfsDDPvzY702xfEXkrTKbnOwzxmlq1kbX0oJee111yfSqUhjo/5srRzfGNtv9QXQXvNDC23TtaDwH2586fnBAgQIECAAAECBAgMKCBwHxBTUwQIEBhQYP9GW2+F/Le31da7f9TQL8vN8SWXCpvzXZ28cDRBenPdhuoVza26yjOOjxG0r3pJ9RrcsdwtcO9F6GYCBAgQIECAAAECBNYiIHBfy0waBwECBAhsQWBfBjn18TGC9i2srH5jFLj383M3AQIECBAgQIAAAQIrEhC4r2gyDYUAAQIEViuwKyOb+vgYQftql9PgAxO4D06qQQIECBAgQIAAAQIEliogcF/qzOk3AQIECGxFoO3xMTmn/fuOODmGKEF72kjIX3s5o71Wap31jmVYjpRZ59waFQECBAgQIECAAAECLQUE7i3BVCdAgAABAhMJ7Mtzao+PSZfel/KxlNtz72u7uisVm6A9oXvtJWivlVp3vWMZnsB93XNsdAQIECBAgAABAgQIVAoI3CuhVCNAgAABAhMJJPDO8TGHyucl9E7dS2X922q78h8JSmuf1dybF+EeSzl1eKZb1ieQtSBwX9+8GhEBAgQIECBAgAABAh0EBO4d0NxCgAABAgRGEnh3DbJrdpkn9O56fMzn13v3LcchaG8JtpHqAveNTLRhEiBAgAABAgQIECDwWEDg/thIDQIECBAgMLZAgu/sav+s8kFdjo/pej57uvRTKTmu5lTZP9W2JXAsw7XDfVtzbrQECBAgQIAAAQIECLwiIHC3NAgQIECAwPMEpjg+ZncNQ78oH2t2zt9qOKP9eWtjSU8WuC9ptvSVAAECBAgQIECAAIFRBQTuo/JqnAABAgQIvCow9vExeQnqoZR9hzn4VO7JjvZzh3vdsj2BYxmyHe7bm3cjJkCAAAECBAgQIEDgBQGBu2VBgAABAgSmFUgAPtbxMbvSdhO05/O213flhoSnl7Y3qr9pgawZgfuml4DBEyBAgAABAgQIECDQCAjcrQUCBAgQIDCNQJfjY/JS1B8rupeXoB5KybExba9fyw3ZzZ7yS9ub1SdQBI6lCNwtBQIECBAgQIAAAQIECBQBgbtlQIAAAQIExhdoc3xMAvAE7acH3dqV7/fZze5FqOPP+1aeIHDfykwbJwECBAgQIECAAAECDwUE7g+JVCBAgAABAp0FPit3fltKPtZc35RKCS/f2mneZzd7+pBjY06lnGs6pA6BCoGsWTvcK6BUIUCAAAECBAgQIEBg/QIC9/XPsRESIECAwPQCOT4mAWR2qtdcP1zrvnZ8zK58P7vkD6Wk7bbXz+WG07Vc2t6sPoEHAsfrer+v9r58Id9zESBAgAABAgQIECBAYDMCAvfNTLWBEiBAgMBEAjnmJeeh1wTjbx0fk/uzmz2hfe0O+fshJsg/XctEw/eYDQocy5jtcN/gxBsyAQIECBAgQIAAAQL/KiBwtyoIECBAgMAwAgnFP5Syr2zuteNjcn9C+7wAtSa0v39cQvxTKQn9L5V9UY1AH4FDuTlHJ91fn67ruE/b7iVAgAABAgQIECBAgMCiBATui5ounSVAgACBGQoMcXzMroyrzwtQw2I3+wwXx0a6tC/j/NsLY82azPdcBAgQIECAAAECBAgQ2IyAwH0zU22gBAgQIDCCQJ/jY4Y4MsZu9hEmVZOtBV4L3C+lpX9r3ZobCBAgQIAAAQIECBAgsGABgfuCJ0/XCRAgQOBpAm2Pj/mu9DRnsf9SSs5lz3Exhx69z1Ed35dy6tGGWwkMKfBfrzTm/9YcUllbBAgQIECAAAECBAjMXsD/EzT7KdJBAgQIEJiRQNvjY34qfU/QfinlXSkJ2ncdx/Nzue90LWnPRWBOAq8F7v+3dDK/aHIRIECAAAECBAgQIEBgEwIC901Ms0ESIECAwAACbY+PyUtL/7OUBO7ZEd/1yu74Uynnrg24j8AEAlmff3zhOX+ydifQ9wgCBAgQIECAAAECBGYjIHCfzVToCAECBAjMVGBX+vVtKfvK/mU3748t6r/UbHbGJ7DPsTF2B1fCq/ZUgXN5+kuB+1/K109P7ZmHEyBAgAABAgQIECBAYEIBgfuE2B5FgAABAosSyPExOQbmOFGvc2RMAvYE7ZeJnukxBIYSyM/J1y809n7Cn6GhxqIdAgQIECBAgAABAgQIdBYQuHemcyMBAgQIrFggZ61/KGU38hh/Le03Lz89j/wszRMYU+BYGn8pcM+RSIcxH6xtAgQIECBAgAABAgQIzElA4D6n2dAXAgQIEHi2wK50oM3xMV37+0O58VSKI2O6CrpvbgL70qG/vdCprPV8z0WAAAECBAgQIECAAIFNCAjcNzHNBkmAAAECFQLZnZsXnOYomTGuHBlzupbLGA/QJoEnCuzLs18K3PM+g39/Yr88mgABAgQIECBAgAABApMKCNwn5fYwAgQIEJihQILC7GrfjdA3R8aMgKrJ2Qr81ys9839vznbKdIwAAQIECBAgQIAAgaEF/D9AQ4tqjwABAgSWIpCd7Dmn/TBChx0ZMwKqJmcvIHCf/RTpIAECBAgQIECAAAECYwsI3McW1j4BAgQIzFHgXenUsZQhj49xZMwcZ1qfphS4lIf9/oUH/ql87TxlRzyLAAECBAgQIECAAAECzxIQuD9L3nMJECBA4BkCn5WHZlf7fsCHf1faystPU1wEtixwLoP/4wsAAvctrwpjJ0CAAAECBAgQILAxAYH7xibccAkQILBRgexkb3a1D0GQ3ewfSzmV8ssQDWqDwAoEBO4rmERDIECAAAECBAgQIECgn4DAvZ+fuwkQIEBg/gL70sWhXoqa3ewJ2RMsuggQ+GeB/FzY4W5VECBAgAABAgQIECCwaQGB+6an3+AJECCwaoHsak/Q/kXPUdrN3hPQ7ZsRyF995C9J7q//KF/I91wECBAgQIAAAQIECBBYvYDAffVTbIAECBDYpMAQL0W1m32TS8egewgcy71fv3D/+/K1fM9FgAABAgQIECBAgACB1QsI3Fc/xQZIgACBTQn0fSnqr0WrOZv9sik5gyXQXyChusC9v6MWCBAgQIAAAQIECBBYsIDAfcGTp+sECBAg8N8COTrm81K+KiWBe5frp3JTE7R3ud89BAj8Yxe7wN1KIECAAAECBAgQIEBg0wIC901Pv8ETIEBg0QIJ2XM++6HHKHJsTIL2H3u04VYCbQV25YbfX2/KL4nyS6Nct5+/9N9tn/Oo/rlUSPk00M/AsbQjcH+k7vsECBAgQIAAAQIECKxaQOC+6uk1OAIECKxOYFdG9GUph1LyeZfLS1C7qLmnjcAfr5X3r3xs09ZUdU/lQTlr/dLjgcdyr8C9B6BbCRAgQIAAAQIECBBYvoDAfflzaAQECBDYgkBC9uxmT+ly5Wz270uxm72LnnteEkionp3p2ZW+u5b7HepLlDuWTn9Tyi8dOp97Be4d4NxCgAABAgQIECBAgMB6BATu65lLIyFAgMDaBBJivivlUEpz5EbbMf5QbjiVkrC9S4DY9nnqr0sg6+4PpTRB+r58nnWZsubrUgb3l1LOLQd5LPUF7i3RVCdAgAABAgQIECBAYF0CAvd1zafRECBAYA0COZv9UErX3ewxyJnUeYnqZQ0gxjCJQHas70pJuN6Urr/omaTDEzwk7zY4XX+ean6WjqWuwH2CifEIAgQIECBAgAABAgTmKyBwn+/c6BkBAgS2JJBgM8fGJCTf9Rh4zmc/lHLu0YZb1y2Q9ZUXlu5LaY6DyUfX2wIJ3/OXIvnZyhFN+e/bvwCIYUxf+vnN2fBHwAQIECBAgAABAgQIENiCgMB9C7NsjAQIEJivQAK7HBuToL3vbuKcO51Qz9Ex853vqXuW8Lc5EmZfPp/LGetNYB2Py7Xcf57/Tqg91nrOz9vh+jPz25EnRuA+MrDmCRAgQIAAAQIECBCYj4DAfT5zoScECBDYmkCOnhgiaP/pGhwmnHRtVyBhehOuP/tImKzJBOVNYN58vJSvpczpSvD+sZT8hclY159Kw+exGtcuAQIECBAgQIAAAQIE5iQgcJ/TbOgLAQIEtiGQYO9Yyq7ncLNLOO0kLHRtS+A+XN8/Yfg5vuhSSsL024/5fIlXDE+l5LidIa/88sGRPUOKaosAAQIECBAgQIAAgVkLCNxnPT06R4AAgVUJ7Mpovi0lwV7f64fSwKGUS9+G3D97gbzMtNmxnjU0xPppM+gExllnCdabnernNg0srG5+ro6lDBG8+zld2OTrLgECBAgQIECAAAEC/QUE7v0NtUCAAAECjwW+KFUStvc9pz272hMI5uWNrnUJ7K4h7758TMCe/55yZ3SzY/1cnnu7a31dyvWjaV6Cmp+3HNXT5vp0/Rk9tblJXQIECBAgQIAAAQIECKxBQOC+hlk0BgIECMxbIGe1HwfoopeiDoA4gybyS5fmrPVd+bwJdqfsWnatNzvWb3euT9mHJT0r85RfmjXzlY/NDvjsYm/Oqz9fXcd60euSzPSVAAECBAgQIECAAIGNCgjcNzrxhk2AAIGJBPJS1A89n5Wdx4dSEua5liOwK11NKHu7Wz2f9/0rh7YCCYTvw/W2bahPgAABAgQIECBAgAABAgSqBATuVUwqESBAgEAHgX25528d7ru95X35j2PPNtw+nkAC9N+WkrnOdf9xvCe/3LJwfWpxzyNAgAABAgQIECBAgACBfxIQuFsQBAgQIDCWwP8rDXfdzexli2PNSl27eVFprsxfc4767e70fV0zo9XKWf7ZtX6+fmzOXB/tgRomQIAAAQIECBAgQIAAAQI1AgL3GiV1CBAgQKCtQALZLrvbE6QeS/nY9oHqPxRodqOnYhOe3wbqu/L1lLld9y8zFa7PbYb0hwABAgQIECBAgAABAgT+R0DgbjEQIECAwBgCx9JoXpba9kqY2ryAsXnx4qV8LSVXE762bXct9ZsXjjbjuT8TfX8z0F35PGVJV/6yIXN9e+a6F3AuaQb1lQABAgQIECBAgAABAhsXELhvfAEYPgECBEYSyA71dyO1fdtswtmU5rr/73z9pa/l60OE97e7xmuGu3+lUtuv1zxrznV+us5LE6xnjvK5iwABAgQIECBAgAABAgQILFpA4L7o6dN5AgQIzE4gO7C/LeWL2fVMh54h0OxYbwJ1wfozZsEzCRAgQIAAAQIECBAgQGAyAYH7ZNQeRIAAgdULZEf7sZSuL0pdPdAKB9j8lUCC9NvSHA20wiEbEgECBAgQIECAAAECBAgQeF1A4G51ECBAgEBfgV1pILva930bcv9sBHLkS3N2+vnaq0v5mJJLoD6bqdIRAgQIECBAgAABAgQIEJiTgMB9TrOhLwQIEFieQJtd7Z/K8E6l5Nzz3bW0PQN9eULz6fFtiH4p3UrJdb5+bF5WO58e6wkBAgQIECBAgAABAgQIEFiYgMB9YROmuwQIEJiJwK7046+lJDB/dOXYka9K+f6NijmG5rat/U3dfL05pmbrAf2vxeL25aKX8t8pzXW++VyA/mhl+j4BAgQIECBAgAABAgQIEBhYQOA+MKjmCBAgsAGBQxnjh1Jqzmp/X+p9LKU5nmRontswPm3f/3e+truW+2fn67/v2aHbXeM1TZ1fqdT26zXPUocAAQIECBAgQIAAAQIECBCYWEDgPjG4xxEgQGDBAgnYc1b7FxVj+KHUya72293YFbepQoAAAQIECBAgQIAAAQIECBBYroDAfblzp+cECBCYUiA7xxO2PzpCJkeeHEvJrnYXAQIECBAgQIAAAQIECBAgQGBTAgL3TU23wRIgQKCTQHa0J2x/dIRMdrUfSrl0eoqbCBAgQIAAAQIECBAgQIAAAQILFxC4L3wCdZ8AAQIjCyRAT9j+1mVX+8iToHkCBAgQIECAAAECBAgQIEBgGQIC92XMk14SIEDgGQI1YXteGpp6zmp/xgx5JgECBAgQIECAAAECBAgQIDArAYH7rKZDZwgQIDAbgZzV/rdS3jpG5pvy/bwY1UWAAAECBAgQIECAAAECBAgQIFAEBO6WAQECBAjcCyRk/3spu1docoRMgvYTOgIECBAgQIAAAQIECBAgQIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg==';
+
diff --git a/vue-options-api-demos/inputs/signature/disabled/main.js b/vue-options-api-demos/inputs/signature/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/disabled/main.vue b/vue-options-api-demos/inputs/signature/disabled/main.vue
new file mode 100644
index 00000000..e589e416
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/disabled/main.vue
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/disabled/sample-signature.js b/vue-options-api-demos/inputs/signature/disabled/sample-signature.js
new file mode 100644
index 00000000..82d3e903
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/disabled/sample-signature.js
@@ -0,0 +1,2 @@
+export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEg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QIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg==';
+
diff --git a/vue-options-api-demos/inputs/signature/events/main.js b/vue-options-api-demos/inputs/signature/events/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/events/main.vue b/vue-options-api-demos/inputs/signature/events/main.vue
new file mode 100644
index 00000000..c3e25e18
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/events/main.vue
@@ -0,0 +1,11 @@
+
+
+Signature
+
+
diff --git a/vue-options-api-demos/inputs/signature/forms/kendo/FormContent.vue b/vue-options-api-demos/inputs/signature/forms/kendo/FormContent.vue
new file mode 100644
index 00000000..fed071c4
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/forms/kendo/FormContent.vue
@@ -0,0 +1,98 @@
+
+
+
+ User Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+ Clear
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/forms/kendo/FormInput.vue b/vue-options-api-demos/inputs/signature/forms/kendo/FormInput.vue
new file mode 100644
index 00000000..61915564
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/forms/kendo/FormInput.vue
@@ -0,0 +1,89 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/forms/kendo/FormSignature.vue b/vue-options-api-demos/inputs/signature/forms/kendo/FormSignature.vue
new file mode 100644
index 00000000..aa5f2239
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/forms/kendo/FormSignature.vue
@@ -0,0 +1,79 @@
+
+
+
+ {{ label }}
+
+
+ {{ hint }}
+
+ {{ validationMessage }}
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/forms/kendo/main.js b/vue-options-api-demos/inputs/signature/forms/kendo/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/forms/kendo/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/forms/kendo/main.vue b/vue-options-api-demos/inputs/signature/forms/kendo/main.vue
new file mode 100644
index 00000000..1e5a3f0e
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/forms/kendo/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/overview/main.js b/vue-options-api-demos/inputs/signature/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/overview/main.vue b/vue-options-api-demos/inputs/signature/overview/main.vue
new file mode 100644
index 00000000..60f3128e
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/overview/main.vue
@@ -0,0 +1,227 @@
+
+
+
+
+
+ Brush:
+
+
+
+
+
+ Background:
+
+
+
+ Upload your signature:
+
+
+
+
+
+
+
+
+ Draw
+
+
+ Upload
+
+
+
+
+
+
+
+
+ Please, browse an image to preview here.
+
+
+
+
+
+ By using the Kendo UI for Vue signature component, you can enable your
+ end-users to draw handwritten signatures using touch or pointer devices.
+
+
+
+ Save
+
+
+ Clear
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/overview/sample-signature.js b/vue-options-api-demos/inputs/signature/overview/sample-signature.js
new file mode 100644
index 00000000..82d3e903
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/overview/sample-signature.js
@@ -0,0 +1,2 @@
+export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEgQIAAga0KCNy3OvPGTYAAAQIECBAgQIAAAQJbE8gLUT+0DNodH7O1VWK8BAgQINBLQODei8/NBAgQIECAAAECBAgQIEBg9gIJ2t+VknPX83nN9dO1/rmmsjoECBAgQIDAPwQE7lYCAQIECBAgQIAAAQIECBBYr8CXZWgfS6kN2nNO+7GU03pJjIwAAQIECIwnIHAfz1bLBAgQIECAAAECBAgQIEDgWQJflAfn+JhdZQd+LfUSzB8r66tGgAABAgQIvCAgcLcsCBAgQIAAAQIECBAgQIDAegT2ZSh5IWo+1lxN0J6w/ZeaG9QhQIAAAQIEXhcQuFsdBAgQIECAAAECBAgQIEBg+QK7MoTsaM/O9trru1LxWMql9gb1CBAgQIAAgbcFBO5WCAECBAgQIECAAAECBAgQWK7ArnQ9O9oPLYbww7W+oL0FmqoECBAgQKBGQOBeo6QOAQIECBAgQIAAAQIECBCYl0BegvqulK9KqX0haoL2YynneQ1FbwgQIECAwHoEBO7rmUsjIUCAAAECBAgQIECAAIFtCCRoT3BeG7T/fK1/2gaPURIgQIAAgecJCNyfZ+/JBAgQIECAAAECBAgQIECgjcCX1+B8V3lTXoiaHfCC9kow1QgQIECAQF8BgXtfQfcTIECAAAECBAgQIECAAIFxBfal+bwQ9bPKxyRo/3gtv1TeoxoBAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAgREEErAnaN+3aPu7Uje72gXtLdBUJUCAAAECQwkI3IeS1A4BAgQIECBAgAABAgQIEBhGYFea+bqUQ4vmPl2D9kuLe1QlQIAAAQIEBhYQuA8MqjkCBAgQIECAAAECBAgQINBRIC9BTdCeHeq11w+l4rGUc+0N6hEgQIAAAQLjCQjcx7PVMgECBAgQIECAAAECBAgQqBFI0P6ulATt+bzm+rlUOpRyrqmsDgECBAgQIDCNgMB9GmdPIUCAAAECBAgQIECAAAECLwl8Wb54LGVXyZOgPfVPlfVVI0CAAAECBCYUELhPiO1RBAgQIECAAAECBAgQIEDgKvBF+ZgXou4qRX4t9T5eixeiVqKpRoAAAQIEphYQuE8t7nkECBAgQIAAAQIECBAgsGWBfRl8zmnPx9rrvaC9lko9AgQIECDwXAGB+3P9PZ0AAQIECBAgQIAAAQIEtiGwK8PMjvbsbK+9visVj6Vcam9QjwABAgQIEHiugMD9uf6eToAAAQIECBAgQIAAAQLrFtiV4WVH+6HFMH8odfMC1R9b3KMqAQIECBAgMAMBgfsMJkEXCBAgQIAAAQIECBAgQGB1Ar8rI3p3Dc7zec2VoP1YyrmmsjoECBAgQIDA/AQE7vObEz0iQIAAAQIECBAgQIAAgWULZEd7dqjXBu0/X4P207KHrfcECBAgQICAwN0aIECAAAECBAgQIECAAAECwwh8eQ3Od5XN/Xqt/7GyvmoECBAgQIDAzAUE7jOfIN0jQIAAAQIECBAgQIAAgdkL7EsP80LUzyp7mqA9IXvKL5X3qEaAAAECBAgsQEDgvoBJ0kUCBAgQIECAAAECBAgQmKVAgvYcH5OPtdd3pWKOmxG014qpR4AAAQIEFiQgcF/QZOkqAQIECBAgQIAAAQIECMxCYFd6kaD90KI3n65B+6XFPaoSIECAAAECCxMQuC9swnSXAAECBAgQIECAAAECBJ4mkJeg5uiYNkH7D6X+sZTz03rtwQQIECBAgMBkAgL3yag9iAABAgQIECBAgAABAgQWKpCg/V0pOQomn9dcP5dKh1LONZXVIUCAAAECBNYhIHBfxzwaBQECBAgQIECAAAECBAiMI5Cg/VhKm6A99U/jdEerBAgQIECAwJwFBO5znh19I0CAAAECBAgQIECAAIFnCXx5Ddp3lR34tdT7eL2n8hbVCBAgQIAAgbUJCNzXNqPGQ4AAAQIECBAgQIAAAQJ9BPbl5pzT/lllI03QnrD9l8p7VCNAgAABAgRWKiBwX+nEGhYBAgQIECBAgAABAgQItBJI0P51KflYe31XKh5LudTeoB4BAgQIECCwbgGB+7rn1+gIECBAgAABAgQIECBA4G2BXfl2gvZDC6hPpW5eoCpob4GmKgECBAgQ2IKAwH0Ls2yMBAgQIECAAAECBAgQIHAvkJeg5uiYNkH7D6X+sZQzTgIECBAgQIDASwICd+uCAAECBAgQIECAAAECBLYkkKD9XSnZoZ7Pa66fr/W/r6msDgECBAgQILBdAYH7dufeyAkQIECAAAECBAgQILA1gRwd0zZoP5Z7TluDMl4CBAgQIECgm4DAvZubuwgQIECAAAECBAgQIEBgOQJflq4mON9VdvnXUu/jtfxSeY9qBAgQIECAAIHfCNwtAgIECBAgQIAAAQIECBBYq8C+DOxbQftap9e4CBAgQIDA/AQE7vObEz0iQIAAAQIECBAgQIAAgX4CCdpzfEw+1l7flYrHUi61N6hHgAABAgQIELgXELhbEwQIECBAgAABAgQIECCwFoFdGciHUr5oMaBPpW7OdRe0t0BTlQABAgQIEHhZQOBuZRAgQIAAAQIECBAgQIDA0gUStGdH+6HFQH4odY+lnFvcoyoBAgQIECBA4E0BgbsFQoAAAQIECBAgQIAAAQJLFfhd6fi7a3BeO4afS8WDoL2WSz0CBAgQIECgjYDAvY2WugQIECBAgAABAgQIECAwB4EmaM9RMPm85krQfizlVFNZHQIECBAgQIBAFwGBexc19xAgQIAAAQIECBAgQIDAswS+LA/+WEpt0P7rNWjPPS4CBAgQIECAwKgCAvdReTVOgAABAgQIECBAgAABAgMJJGg/lrKrbC9Be0L2lF8q71GNAAECBAgQINBLQODei8/NBAgQIECAAAECBAgQIDCywL60/6GUz1o857tSN8fNCNpboKlKgAABAgQI9BcQuPc31AIBAgQIECBAgAABAgQIDC+QoP3rUvKx9krQfizlUnuDegQIECBAgACBIQUE7kNqaosAAQIECBAgQIAAAQIE+grsSgPZ0f5Fi4Z+KHWzo/3HFveoSoAAAQIECBAYXEDgPjipBgkQIECAAAECBAgQIECgg0CC9uxoP7S4N0H7sZRzi3tUJUCAAAECBAiMJiBwH41WwwQIECBAgAABAgQIECBQIfC7UidBe3ao114/X+t/X3uDegQIECBAgACBKQQE7lMoewYBAgQIECBAgAABAgQI3AskaH93Dc7zec2VoP1YyqmmsjoECBAgQIAAgakFBO5Ti3seAQIECBAgQIAAAQIECDQ72muD9l8L2cdr2E6PAAECBAgQIDBbAYH7bKdGxwgQIECAAAECBAiMIrArrf6+lM9KSdi5v3lKvpfSXHkB5ftSHNsxylRsstEvy6iPd+vsLYgmaE/Y/ssmxQyaAAECBAgQWJSAwH1R06WzBAgQIECAAAECBFoJJFD/Yyn7UhKw52PbKyHnv5dyaXuj+gRuBNoG7bn1m1KOpQjaLSUCBAgQIEBgMQIC98VMlY4SIECAAAECBAgQeCjQBOxflJr7UnYP76ir8OdSzS73Oiu1/lkg6zDHx+Rj7fVdqXgs5VJ7g3oECBAgQIAAgbkICNznMhP6QYAAAQIECBAgQKCbwK7cll3sCdlTxrgE7mOorrvNfRle26D9h3LPoZTLummMjgABAgQIEFizgMB9zbNrbAQIECBAgAABAmsVyE72HNGRcDJHxYx9/ak84Dz2Q7S/CoFdGcWHUtr88idB+9EaW8X8GwQBAgQIENi8gMB980sAAAECBAgQIECAwIIEErKPuZP9NQr/f8OCFsmTupqgPTvaDy2e/1Op+5WgvYWYqgQIECBAgMDsBfwfzrOfIh0kQIAAAQIECBDYuECCzHfXIDM724e4sqP4ci0/lo95KeVfS3mp/U/l6212Kw/RP20sRyBrJkF7gvPa6+dS8VjKqfYG9QgQIECAAAECSxEQuC9lpvSTAAECBAgQIEBgawLNkTH7ngPPLuKE6udrubzQXsLPhKYvXc5v7zkBK709QXt+EZSgvfYXQYL2lS4GwyJAgAABAgT+V0DgbjUQIECAAAECBAgQmI9AE2IeSpd2Hbv1a7nv+2s5l4/Zvf7WlTPg//5KhQSkXfvRsftuW4BAs6O9NmjPmvxYynEBY9NFAgQIECBAgEAvAYF7Lz43EyBAgAABAgQIEBhEIKF3c2xMlwYTjN+G7LVtJDBN2L575QYvS62V3Ea9/NXF8Y31cq/QBO0J2x/94mcbgkZJgAABAgQIrF5A4L76KTZAAgQIECBAgACBGQt8XvqWIzn2HfrY7GRPmJkjY9peCdv/VkrC/peunPPepV9t+6H+/AXaBu0Z0TelHEsRtM9/fvWQAAECBAgQGFBA4D4gpqYIECBAgAABAgQIVAgk6E7QnjByV1H/vkpeYnoqJTva+1wJ2/evNJAwP30TlvYRXv69WR8fSnntlzIvjfC769q+LH/4RkCAAAECBAgQaC8gcG9v5g4CBAgQIECAAAECXQS6vGSyeU4C8FMp2c0+RJD5bWnn8MYgHCXTZYbXc8++DCXntOdj7ZW/iMiaGmJ91j5TPQIECBAgQIDA7AQE7rObEh0iQIAAAQIECBBYmcCujCfhZcLItldCzNO1tL33tfqPwvb35cbjUA/TzqIEspM9O9r3LXqdNZr1cm5xj6oECBAgQIAAgdUKCNxXO7UGRoAAAQIECBAg8GSBhJZtdwk3Xc6xHF3PZn9t2Nlh/9dS0q/Xrjz38GQ3j59eYHddq23mXtA+/Tx5IgECBAgQILAAAYH7AiZJFwkQIECAAAECBBYlkBdMJrjct+z1z6X+qZQE7UOfnZ6dywnbd2/0SdjecsJWUD3roe1fX2SdHq9rdQUEhkCAAAECBAgQGFZA4D6sp9YIECBAgAABAgS2KdDnRag/FbKE7KeR6L4o7eYYmfTxtSt9aPNizJG6qtmJBLIWErR/1eJ5gmpWyTgAACAASURBVPYWWKoSIECAAAEC2xUQuG937o2cAAECBAgQIECgv0CfF6GOfSTHrgwv53EncH/rSti+L2XoXfX9dbUwtECX9ZoX9uYXQsehO6M9AgQIECBAgMAaBQTua5xVYyJAgAABAgQIEBhbYFce0PYojqZPObol4eVlxE6+uz7jrV3tefynUg6lCNtHnIwZNN0naB/jiKMZkOgCAQIECBAgQGAcAYH7OK5aJUCAAAECBAgQWKfAvgyrOaO9zQibXcJjh5e70qkcH5N+Prq+KRXaHCnyqD3fn6dA7S9fmt5PtVbnqaVXBAgQIECAAIGeAgL3noBuJ0CAAAECBAgQ2IRAAuzsaM/HNlfOvW7OZx97F3n6d6zoXALVBO2nirqqLFcgvxjKeti1GMIUf33RojuqEiBAgAABAgSWJyBwX96c6TEBAgQIECBAgMB0As1u9n3LR479ItTb7qRv2dVeE6ymX4dSfmw5HtWXIyBoX85c6SkBAgQIECCwQgGB+won1ZAIECBAgAABAgR6C3QJLfPQsV+EejuwBOy1x8fkvvelHHvLaGCuAl3WbM7wz187XOY6KP0iQIAAAQIECCxNQOC+tBnTXwIECBAgQIAAgTEFuoSW6c+UR3HkBZg5Pqb2/PX8EiB17Wofc+U8r+39dT3kY+015S+GavukHgECBAgQIEBgFQIC91VMo0EQIECAAAECBAj0EEiA/Xkpx1J2LdrJWeinUnJG+6XFfX2q5hcCeV76/OhK/zKm1HetT2BfhtT2vQKC9vWtAyMiQIAAAQIEZiYgcJ/ZhOgOAQIECBAgQIDAZAIJrd+Vkt3fNQF207EE2QmxU8Z+EWrzzISrH0r5rFInweqhlEtlfdWWI5C1IGhfznzpKQECBAgQILAxAYH7xibccAkQIECAAAECBP47XO8StP9c7juWcprQMAF7gvaErDVX+phfIHxfU1mdRQlkDbQN2p+xZheFqrMECBAgQIAAgaEFBO5Di2qPAAECBAgQIEBgrgJLCtp313D1UInZ7Lo/VtZXbTkCgvblzJWeEiBAgAABAgR+I3C3CAgQIECAAAECBNYusKSgPX3NjvbaoD1zN+ULW9e+VuY0PkH7nGZDXwgQIECAAAEClQIC90oo1QgQIECAAAECBBYn0DVoz/nnOZ99ymNZuvTVCzAXtySrOrwrtXJ0zKGq9j8qOTqmBZaqBAgQIECAAIExBQTuY+pqmwABAgQIECBA4BkCXcLr9PNZAXbC1TYvbs3xMal/egauZ44msCsttw3an/EC39EANEyAAAECBAgQWIOAwH0Ns2gMBAgQIECAAAECjcCX5ZNjKQkva69nBe1t+ypcrZ3RZdXLWhW0L2vO9JYAAQIECBAg8KqAwN3iIECAAAECBAgQWINA2/A6Y15K0J6+vi8lx9z8sobJMob/FtiVImi3GAgQIECAAAECKxMQuK9sQg2HAAECBAgQILAxgbUH7V6Iur4FLWhf35waEQECBAgQIEDgfwQE7hYDAQIECBAgQIDAEgXWHrR/KpOSc9ovS5wcfX5R4LPy1XelHFr4OEaoBZaqBAgQIECAAIE5CAjc5zAL+kCAAAECBAgQIFArsC8VP5SS8LL2WtLRMc/qa62leu0FsmZzdEw+1l6C9lop9QgQIECAAAECMxMQuM9sQnSHAAECBAgQIEDgRYEuoeWzwusl7b633MYT6LJmBe3jzYeWCRAgQIAAAQKTCAjcJ2H2EAIECBAgQIAAgY4C2cmeHe0JL2uvn0rFHMdyrr1hoHqC9oEgF95M1qod7QufRN0nQIAAAQIECHQVELh3lXMfAQIECBAgQIDAmAK7a2h5aPGQn0vdYymnFvf0rfq70sDn1+emz7XXs3bf1/ZPvfYC+YVL1uu+xa12tLfAUpUAAQIECBAgsAQBgfsSZkkfCRAgQIAAAQLbEdiVoWZ3cILL2utZQXtegJmd9Anday9Be63Ucup1+csGQfty5ldPCRAgQIAAAQKtBATurbhUJkCAAAECBAgQGEkgoXXbAFvQPtJkaPahQNe/bBC0P6RVgQABAgQIECCwbAGB+7LnT+8JECBAgAABAksX6BK0J7Q8lvJxwsF36We6Z0f7hJM0waO6rgNB+wST4xEECBAgQIAAgTkICNznMAv6QIAAAQIECBDYpkDbozieEVp2DVgF7eta07synLZHHUXgGWt2XfJGQ4AAAQIECBBYmIDAfWETprsECBAgQIAAgRUI7MsYvi0lIWbt9b5UzI72X2pvGKBefiGQZzqjfQDMhTaRtdq8DLXNEJrjjr6feM226aO6BAgQIECAAAECIwgI3EdA1SQBAgQIECBAgMCLAgkvs0s4H2uv70rFYymX2hsGqNd2530eaUf7APAzaqIJ2dus1XT/Ge8VmBGbrhAgQIAAAQIECAjcrQECBAgQIECAAIGxBXblAW2P4xC0jz0r2r8XyF8yJGj/qpSs2TZXfuFyupY296lLgAABAgQIECCwMgGB+8om1HAIECBAgAABAjMSSID5oZRDiz49Y6f4/trPz2bezxbdU7WFwK7UfXddp22OD8ojnrFeWwxNVQIECBAgQIAAgakFBO5Ti3seAQIECBAgQGD9Al1eNPpTYcnO4vOEPPvyrLZH3AhYJ5ygkR+V+U/Q/kWH5zzjLzA6dNMtBAgQIECAAAECUwsI3KcW9zwCBAgQIECAwLoF2r5o9BlnXu/KFOSlrQlcay9Be63U/Os1x8a0+YuGjOrXUk6l5EW6l/kPUw8JECBAgAABAgSeISBwf4a6ZxIgQIAAAQIE1iewL0NKiL2rHFrCy+M1vKy8pXe19K3tWfLP2Hnfe6Aa+BeBzH0TtLc9Nia/FErIfirlF7YECBAgQIAAAQIE3hIQuFsfBAgQIECAAAECfQSySzjntO8rG0nQnvAyZarwMgFrgvYcWVN7PWPnfW3f1KsXyLpM0H6ov+V/anoRagc0txAgQIAAAQIEti4gcN/6CjB+AgQIECBAgEA3gV25re1u8anPve5ylrygvdt6mNtdXY+NyTiyTk+lnOc2KP0hQIAAAQIECBCYv4DAff5zpIcECBAgQIAAgTkJdAmxs1P4UMplwoHkZZjHUmqPD2l23uce1zIFdqXbXY+NcT77MudcrwkQIECAAAECsxMQuM9uSnSIAAECBAgQIDBbgbYvRH3Gi0bTx4TmCV9rrmcccVPTL3XqBfalatdjY5q/aPi+tDHVEUf1I1OTAAECBAgQIEBgcQIC98VNmQ4TIECAAAECBCYXSKDZ5oWozziWpW0fg/hNKUdB6+TraYgH5i8XPr/O365Dg/llUN4jkKDdRYAAAQIECBAgQGAwAYH7YJQaIkCAAAECBAisTqDrC1GPE0rsy7Nylnw+1l5TnyVf2y/1HgvsrvP9RflYe1xQ02r+miEBe9bn5fGj1CBAgAABAgQIECDQXkDg3t7MHQQIECBAgACBtQskyPxQyqHFQKfeLb679jHBa+31jLPka/um3tsC2c3+VSn7DlD5i4vsZj+V4tiYDoBuIUCAAAECBAgQqBcQuNdbqUmAAAECBAgQ2IJAdosn2KzdPfzpWv8yEc6uPCd9PLR43jPOkm/RPVVfEchcN2ez5/O2l2Nj2oqpT4AAAQIECBAg0FtA4N6bUAMECBAgQIAAgVUItH3Z6NQhdn4B8K6UYwvt7Gw+lHJucY+qzxfYly50fQmqY2OeP396QIAAAQIECBDYtIDAfdPTb/AECBAgQIAAgf8+oqPNGehTvxC1Cdrb7Lqfuo+WUX+Bvi9BbeY8Z7Q7Nqb/fGiBAAECBAgQIECgo4DAvSOc2wgQIECAAAECCxfYXYP2Q+U4snM452AfK+sPUS27nPPM2uNtntHHIca55TbyYt785UKXl6DGLS/APZVy3jKisRMgQIAAAQIECMxHQOA+n7nQEwIECBAgQIDAFAJddown1MwO86l2Drc93qYJ2hPOT9XHKeZqzc9ojozZdxhkdrMnZE+5dLjfLQQIECBAgAABAgRGExC4j0arYQIECBAgQIDA7ATaBtk5p/0wYai5L8/6UEp2PddeU/8yoLZf6v2rwK58KbvZs6Zq/2rhtpWsx9O18CVAgAABAgQIECAwSwGB+yynRacIECBAgAABAoMK7Etrbc9pTyh6HrQXrzfWtn9pKUH7sZTLRH30mO4CfXazNy9BzV8v/Ni9C+4kQIAAAQIECBAgMI2AwH0aZ08hQIAAAQIECDxDYFcemqD9UPnwhJvHUhJuTnFlJ3t2tO9bPCy7nHO8jfC1BdoTqmbtNUF7Pm97eQlqWzH1CRAgQIAAAQIEZiEgcJ/FNOgEAQIECBAgQGBQgS7ntH9TenAsZYoz0BPAtvlFQHAStKd/50GlNDa0wOelwUMpeQlql8tLULuouYcAAQIECBAgQGA2AgL32UyFjhAgQIAAAQIEBhFoe077p/LU7Bi/DPL0txvZlW+3Ddqz0zn9+36C/nlEN4HMa9/d7KfShpfedvN3FwECBAgQIECAwIwEBO4zmgxdIUCAAAECBAj0EGh7PMtP1yD73OOZtbdmx32C9gTntVdzpMip9gb1Jhfou5s9v+zJ/PplyuRT54EECBAgQIAAAQJjCQjcx5LVLgECBAgQIEBgGoGE2TkH/VD5uJzTnuA7QefYV5ejbaY+R35sg7W1vysDGmI3e9bfZW04xkOAAAECBAgQIEBA4G4NECBAgAABAgSWK9DsGk+wXXO9L5WmOLaja9Cevk3Rvxordf5ZoO9u9pzBf7oWtgQIECBAgAABAgRWKyBwX+3UGhgBAgQIECCwYoG8kDK72neVY0zYeSjlUlm/azVBe1e5ed6X+cxu9vxFRO1aux1J/lrhVEp+iTL22punoF4RIECAAAECBAhsTkDgvrkpN2ACBAgQIEBgwQIJPb8tZV85hpyDfijlXFm/T7UEswlWa3fb51nflXIs5dLnwe4dXCDrqzk2pkvjdrN3UXMPAQIECBAgQIDAKgQE7quYRoMgQIAAAQIEVi7Q9qWjU56DnmA2ofmuxRwI2ltgTVQ189fnbHa72SeaKI8hQIAAAQIECBCYt4DAfd7zo3cECBAgQIAAgbY7x7+5BuC/jEwnaB8ZeKLm+57N/lPpZ/6y4TRRfz2GAAECBAgQIECAwKwFBO6znh6dI0CAAAECBDYssC9jzzntn1UaTHVOe5egPX07lnKuHItq4wpkTTW72dscAdT0KrvZvy8lQfuP43ZV6wQIECBAgAABAgSWJSBwX9Z86S0BAgQIECCwfoFdGeLXpRwqh5pz2vNSywSgY16C9jF1x28766rZzV77S5z7XjW72bPWxv4LivFFPIEAAQIECBAgQIDACAIC9xFQNUmAAAECBAgQ6CiQoD3hec2u4+wyzg7jY8dn1d4maK+Vml+9rKOE7F9cS5ce2s3eRc09BAgQIECAAAECmxUQuG926g2cAAECBAgQmJFAAtEcH7Or7NMULx0VtFdOxgyr3YbsNb+8eWkIdrPPcGJ1iQABAgQIECBAYP4CAvf5z5EeEiBAgAABAusVSMD+bSn7yiFOcRa6oL1yMmZWre+57BlOdrOfrsXZ7DObYN0hQIAAAQIECBBYhoDAfRnzpJcECBAgQIDAugSy67g5PqZmZAlCc9RMwtAxrubokWNpfNfiATk/PveM1a8WXdlk1SZkz19ItJm3e6xP5Qs5l908bnIZGTQBAgQIECBAgMCQAgL3ITW1RYAAAQIECBB4LJAd5Dl7vfaoj/fX+mO8pDJ9eFdK7bnxzegE7Y/neawau9Jw35efpm+Zw6zDBO2XsTqrXQIECBAgQIAAAQJbExC4b23GjZcAAQIECBB4lsC+PDi72vOx5srxMYdSLjWVW9YRtLcEe3L1zFd+UZP1kF3tXS9HxnSVcx8BAgQIECBAgACBSgGBeyWUagQIECBAgACBjgIJS/NC1ISlNVd2HqfuuaZyyzq7Uj872tN+7Q77PMKO9pbQA1RvjvnJcTEpXa+E7NnF3pSu7biPAAECBAgQIECAAIEKAYF7BZIqBAgQIECAAIGOAs057TXhdoLRHPFx7Pist27blW+mL4eWbf907dOp5X2qdxdojovpE7Ln6c257AnaxziOqPsI3UmAAAECBAgQIEBgxQIC9xVPrqERIECAAAECTxPYlyd/W8qusgfflXo5R33oYDT9yI72tuFtjrM5lnKu7L9q/QQyTzkyJvNU88uZ156WX5CcrmXotdRvhO4mQIAAAQIECBAgsBEBgftGJtowCRAgQIAAgUkEduUpOT6mNuBOQJqg/Txw75rzvvct2xW0twTrUT1rpZmnfN71akJ2Lz/tKug+AgQIECBAgAABAgMKCNwHxNQUAQIECBAgsFmB5iWkx0qBHB+ToP1UWb+mWvNizbS7q7nhpo6gvSVYx+rNueyZoz4vP82Z+gnYs35+7NgXtxEgQIAAAQIECBAgMIKAwH0EVE0SIECAAAECmxLIbvbsat9VjvqbUu9YylBHfuS5XV6Emu7mKJucGy+0rZy8jtVyLnvWyaHj/bmtefmp+eqB6FYCBAgQIECAAAECYwsI3McW1j4BAgQIECCwVoFdGVjOad9XDjC7yLOzeahwO8/tcj57upug/VjKpbLvqrUXyProe2RME7JnN3uKiwABAgQIECBAgACBmQsI3Gc+QbpHgAABAgQIzE4gx4J8XUrC85orx3+k7lCBaULcLkeSJLzN7uhTKZeajqvTSaDr+fm3D/t0XS+ZKxcBAgQIECBAgAABAgsSELgvaLJ0lQABAgQIPFFgV579+xeen6+n3F+vff22XoLrPudYp63sFr89miWf3+4gv/3vBN+XnoYJUxNap++PribgTv2+x8fkec2xMS95v9WXjLsJ2vv249GYt/r9zEnXY30as7z8NPOUX8yYp62uJOMmQIAAAQIECBBYvIDAffFTaAAECBAgQOChwB9varwUcu/vWhgiCH/YqSdXuA3qz9e+NB8TfN4HnvnFQM5pv7d6bRjZoZxd6Jee49yV+7Ob/tChnRxhc7qWDre7pUIgZ7Nnbr6oqPtSleblpwna+66Vjl1wGwECBAgQIECAAAECQwoI3IfU1BYBAgQIEBhPIIHvb6/N3wfi+d7tjuv9eN3YVMsJQJsQtNY0AeqhlHNPqQS5Cexrn3v7uJzPfhqgDz2HsNrb87PWHOuz6zDK5lx2c9QBzy0ECBAgQIAAAQIE5i4gcJ/7DOkfAQIECKxR4DY8vw3Lbz/fwi7ztc1tgu5Dj0FlzhO0H0tpG+QmxE2Aa6d0jwl4cGvmJH9tkN3sNUcK3TfX/MWBI2PGmyMtEyBAgAABAgQIEHi6gMD96VOgAwQIECCwAoHbI1v2N+N57fMVDNkQXhHIUTQ5ruZ8LQlZH127UqHr+d/OZ3+k2//7ff7awC9C+vtrgQABAgQIECBAgMCiBATui5ounSVAgACBiQSye/UP12clDE3Jdfv5/TEuE3XNYxYocCp9zu73813f9+W/E7R3Of87QX7zgs0Fksy+y33+2iCDyxn+mffsZncRIECAAAECBAgQILAhAYH7hibbUAkQIEDgN81RLrfHteyKS0quPaNXBbJTNzu3769L+UJK7ddv6zW7wfuw3//i4/4ontv5vT3Kp88zu957Ljf+uZRmx3T60/ZKcJ+g/aW5aNuW+v8qkPXS9a8N7Ga3oggQIECAAAECBAgQ+I3A3SIgQIAAgTUINEe63IatTRDrLPTf/Ob+WJMEv7dXwtuE37fXfZ01rJPbMeyv/3EoH/MCzDlfCXITsqfcz9Oc+72kvmU9ZB1kPbS9frrOzantjeoTIECAAAECBAgQILA+AYH7+ubUiAgQILAmgSZI35VBpeTaXz/efm1NY35tLDmr+3LzzfPN5/eB+UsB+haM2owx6+dDKbXHuTS/tLg9bqjN87rUFeR2UWt3TxOyN/+utLk7f21wKuX2Z7HN/eoSIECAAAECBAgQILBCAYH7CifVkAgQILAQgSZMb3aiJwBN2cKO9Nvw/FLGnJLr/ogVQd44i/nr0uxX17X26AnZXZ66p7uKzXrdX9dt/vv25bmP2n3r+zn/O7vZzX8fxdfv7XM+e/PXBlkPzc/tOL3UKgECBAgQIECAAAECixQQuC9y2nSaAAECsxfYWpiencjNUR+3u8tf+3z2E7jSDu7LuL4tZVc5vm9KvePN3D66Le222TV/257zvx/p9v9+gvacz177y5bbJ/prg/7+WiBAgAABAgQIECCwCQGB+yam2SAJECAwqMBWwvTmCJHbXee3n1+Kaopr/gK70sU2QXjm/tBifvelbtfzv/PXDsdSvi/F+ezjrKXMf/6qIXPa9vLXBm3F1CdAgAABAgQIECCwcQGB+8YXgOETIEDgTqA5n7o51uX+49LBbo9yaXaf34bozj5f+gz/c/+bHc3HymFlfWT3c8LvR1efY0nSdkL9HBtT86xHffH9lwV25ctdgnZ/bWBFESBAgAABAgQIECDQWUDg3pnOjQQIEFikwFoD9dsjXc7XmbmUjym5mq8tctJ0upNAXoaaXe27yrvfl3oJwB/tMk97OZbkUEp+ntpe2TGdUL9Zm23vV/+xwL5USdCej22u/MIla+BUsQ7atKsuAQIECBAgQIAAAQIbEhC4b2iyDZUAgU0IrC1Qb4L0l3ah335tE5NrkFUCu1Ir57Tvq2r/Y6f5oZTLg/qfl+8nKK9t96XmsnM6/XsU6ld2XbU7gcxNl6Dd+eyWEgECBAgQIECAAAECgwkI3Aej1BABAgQmEVhToN6E6Qk6U24D9PMkmh6yJoExjo/ZFaDmbPZ83vfKLvpj30bc/y8C+/KVLkF7ftmS+fDvjUVFgAABAgQIECBAgMBgAgL3wSg1RIAAgcEEmlB9V1pM+ayUfC2h0lIuYfpSZmod/WxzfEx2mefYkOMbQ8/PWo6NSbtDXTmuJD/PruEEMk9dgvbvrvN/Ga4rWiJAgAABAgQIECBAgMA/BATuVgIBAgSeI5Dg7fel3IbpzQtKn9Oj+qcK0+ut1BxXID9HbY6Peev89Pz8ZTd7jo1Ju0Nf/14azEt5Xf0F9qWJtkG7F6H2d9cCAQIECBAgQIAAAQIVAgL3CiRVCBAg0FEgYfpvS0k41ITpSwjVm0D9fB33/ceOHG4jMJhAl+NjDuXpzVq+7Uh+PptjY7p0MCH+H0rZvXHzf5TvZVe9q59A5qpL0B77mhfi9uuduwkQIECAAAECBAgQIFAEBO6WAQECBPoJ/PF6e4KgJkzflc9T5no1gXp22zbnpt9+nGu/9YtABBKOJzzNz9uj67XjY/Lz2eds9qbd70s7OXrm8EZHcnzJW99/NAbf/8e/p23+kiFmzRwJ2q0gAgQIECBAgAABAgQmFRC4T8rtYQQILFQgYU9z/Es+z8715iiYOQ5JoD7HWdGnvgL5mftQyr6yofvjYxLQf17KoUUb94/KSzZP15L2/nb9t+C1LuVnMf3NL7Rc7QXy7212tGfOaq+clX8sJb8M4V6rph4BAgQIECBAgAABAoMJCNwHo9QQAQIrEMhu9WaX+u3Z6nMbmkB9bjOiP2MK5GcyoWvOVq+5ErgeSjlfK+/Lx+xm/+L6813Txm2d7JROeHss5XL9Rv59SNj+1i57YXtb6f+t3/bIoNzZBO2n7o91JwECBAgQIECAAAECBPoLCNz7G2qBAIFlCSTIyXnLt4H6rvx3ypyu7KS9P+7lUr6W4iKwFYG2x8ccC0yOEMnPc58jY+KbwDxt3e+UTvif57x1Cdu7r9Ac0RPfmiOD8hRBe3drdxIgQIAAAQIECBAgMIKAwH0EVE0SIDALgdtgfVd6lIB9P4ue/W8nbkP1S/lyyo+lOAZhZhOlO5MLtD0+JuekH0vJX6lkJ3tKl6vZzZ6gPT+Lt1f+Hak5Rzx9yW58P8ftZiD/Psc3zjXXa+fz19yrDgECBAgQIECAAAECBEYTELiPRqthAgQmFEg4l13rCWoS2uRjbWgzZjcTCCW0u1xLE6afx3yotgksWKDt8THZSd4c7XLoMe7XdrM3TSbATxj8aNf1N6VO7dE3Pbq7qlvzb3XNLzKaQXsZ6qqm32AIECBAgAABAgQIrE9A4L6+OTUiAmsWSDCTl5fuS0nInv/Ox2deOc7gUsp9mH5+Zqc8m8ACBdocH9MML7vIH4Xgr1HkZzfHxWQ3e36GX7rSdsLgmh3zfyn1Tgt0f1aXY9scH1Pbh/fX+fLXA7Vi6hEgQIAAAQIECBAgMLmAwH1ycg8kQKBSIEdD3Ibq+bxrsFb5yDer5fiXy7U0u9bvj5wY4jnaILA1gbbHx/T1yZEvCdpT3rpqfwGQ4D6BvH8P6mdmX6q2OT6mOTIo/wa7CBAgQIAAAQIECBAgMGsBgfusp0fnCGxGoDkSJiFMPn/WrvXb3eoJdm6Pg9nMZBgogYkE2h4f06dbj46MuW17V/6j9oiTT6XuoRQ7rutmJ3P+4WpWc0d+0Xks5VxTWR0CBAgQIECAAAECBAjMQUDgPodZ0AcC2xJowvUmWN8/YfgJ3y6lJFC/PwrmCd3xSAKbE6jdPd4HJmd9n66lZvd52yNO/qO0neNoXHUC+SuAmnPw01p++flVKY/+CqHuyWoRIECAAAECBAgQIEBgQgGB+4TYHkVggwLPDtfvg/Vmx/oGp8KQCcxCYOzjYxKyN8fFtAlr8wuAYym7CqX8u3IopSbEr2huE1XilbD90dW8EDVz4SJAgAABAgQIECBAgMAiBQTui5w2nSYwS4HsDs256/tSEqrl41RXQpqEX+dSLteSz10ECMxDYOzjY3K0SwL2U8vh5t+pr1v8e5WXdh5bPmPr1Q8FoCZszxxmV3v+DXcRIECAAAECBAgQIEBgsQIC98VOnY4TeLrA7bnrCa12E/WoeXlpcxxMcyTMRI/3GAIEWgqMdXxME7InaG973uQL5wAAIABJREFUhnr+vUrQfqgci13tlVB31eL7KGx3fEw3W3cRIECAAAECBAgQIDBTAYH7TCdGtwjMUOB+93p2rI553e5ab46CcYTDmOLaJjCswL4012b3eM3T8wu3UyldQva03/acdkec1MzKy3XyS9m/Xc1fa+Wb8o1jKW1/YdK9V+4kQIAAAQIECBAgQIDAyAIC95GBNU9goQK70u8/lLK/lgQnY1734bqz1sfU1jaBcQTy70Z+MZeXY+bfjqF+KZeQvTmX/dKx603QniNLavvliJOO2Nfb/l4+vva/Hfk3P+vk3O8R7iZAgAABAgQIECBAgMD8BATu85sTPSLwDIEEUJ9fQ7IEZbsROyFcHxFX0wQmFBjrWKn8G5EgtgnZ++5+bvNC1PDliJPDtQ8Tcq7qUR/LaN69MqLMb/53xl8srWrKDYYAAQIECBAgQIAAgUZA4G4tENiuwG3APtYOduH6dteXka9PYMxjpfJvRROw5+MQV9ugPX04lpKw2NVdYF9uzVEyL10xzv/eXLo3704CBAgQIECAAAECBAjMW0DgPu/50TsCQwrsSmPNcQ/5U/4xrrxYMLsWz9ciVBlDWZsExhfIX73k34uEo/trGfqp2UmecP10/XdjqPbT3w/Xvte2+b5UTNDedzd97fPWXC9he+bgpevP1zlf8/iNjQABAgQIECBAgACBjQsI3De+AAx/9QK7MsLsZD+UMsYu9pytfC6lCdmFVatfUga4UoH8W3G7g32Mfy9uj4rJvxuXgS33pb22L2n9rtxzHKEvAw9tMc3lf2u+faW3ORN/rF/2LgZIRwkQIECAAAECBAgQWL+AwH39c2yE2xNozmNPsDFkuNGEZQnKmoB9e7pGTGAdAvfh+m7EYSXUzu7xsc7s3pe22wbt+WXhsZT8e+YaTuA/S1MvraX870e+7peyw1lriQABAgQIECBAgACBmQoI3Gc6MbpFoINAwoyETgnZE7r3vXI8zLmUJly/9G3Q/QQIPEUgu9Wb42Hy+Ri7118aWP4N+er678gYA99f/83Lx9pL0F4r1b5e/rfnr6/c9pfy9VP7Jt1BgAABAgQIECBAgACB5QkI3Jc3Z3pM4F4gYdO7UvruZs95yudrybnKdiJaawSWJ5Aw/Q+lNMF6/n2Y+hr75aMZU9sd7fn37VjKaWqMDT0v/7uRI8zur9jvNuRgqAQIECBAgAABAgQIbFxA4L7xBWD4ixZIgJHQ6dBxFLdHxJxLG2Md99Cxe24jQOCBQP4NaML1ffk8IfsQf93SBz7Hx2RX+xi/sMsYBe19Zmfce//rlebtbh/XXesECBAgQIAAAQIECMxMQOA+swnRHQKVAodS70OHcC0he3YhNqXycaoRIPBkgWbn+q70Y1/KHML1W5Ixj4/JeAXtT16ADx7/1nEy/m/Nec+d3hEgQIAAAQIECBAgMLCA/ydoYFDNEZhA4NvyjEOL5wjZW2CpSuDJAtmhnl3rCZl3pUx95vq5PPP3pdQeUTXm8TExaBu0pz95QWvKGLvsn7w8Zvv443Wu7juYM/Mzjy4CBAgQIECAAAECBAhsRkDgvpmpNtCVCLwWarw0vBztYCf7SibeMFYpkDA94XY+JpScctd6ztXOMVIp52vZlY/5hV76UnONdXxMni9or5mB+dR57X+b3pcu5nsuAgQIECBAgAABAgQIbEZA4L6ZqTbQFQgkjPt7xTi+uQYcdndWYKlCYAKBP5Zn7K4lP8f5PB+nurLruwnWm4+3/z5kV31evHys7NBYx8fkhZs5/31f2Y9Us6O9BdaIVbN28kuS+0vgPiK6pgkQIECAAAECBAgQmKeAwH2e86JXBF4SeC3QeKR1fqFCQrf7QP6lr+U4ABcBAo8FdqVKs1s9nzdHwSTMnvrKz+3t7vXLGx3I0TF5H0T6/Oga6/iYL8uD8+9bTR+aPgraH83WtN/P/AncpzX3NAIECBAgQIAAAQIEZiogcJ/pxOgWgRcEXgs0psY63z0wwX3CvdvrUv4j5fbKERb3X5u6755HoI/ArtycUD0fU5ojYPZ9Gu15b3ab3+5ev/9ZfK359P/Zx8cI2ntO/oxuP5a+CNxnNCG6QoAAAQIECBAgQIDA8wQE7s+z92QCbQUSkCVM+23bG2dc/1L6lnJ71X6tOSZjxsPTtYUJ5GfsNlDPf9+WZw7n9liY/Iw0O9jb9mkOx8cI2tvO2vzrH0sXBe7znyc9JECAAAECBAgQIEBgAgGB+wTIHkFgQIHsqM2LUBMKul4WOL/w5Uv5Wsr99VLd1HGUzvpW1+7m56bZmZ6v3Za5jDq71rNeb3euD/FOhmcfH9MlaM9fxnws5VTKEAZzmeO19eNYBiRwX9usGg8BAgQIECBAgAABAp0EBO6d2NxE4OkCzYsF85JB1zQCLx2d0zz5/EoXLuXrKS9dCVUFiP3mLru1/3BtYlc+puRqAvV8P5/P9Wp2rTe71bNWXltLfcYQlzbHx3wq9Q8Drc9mR33+zWpznn2C9mMppz4Dd+9kApkrgftk3B5EgAABAgQIECBAgMCcBQTuc54dfSPwWKAJFPelahMy5uOajp15rLDOGucHw3r0/dz+1i8J3mp+6B3+u/Kwmr/KyDq+vZo13Xwt7aQs7WreX5A5a+YkIfvYv3Bpe3xM+nkopWZtPZoDQfsjoXV9/1iGI3Bf15waDQECBAgQIECAAAECHQUE7h3h3EZgQQL7F/pa+7U/Lmicukrg2QL5RcXlWhKo5/N8fMbV9viYHNtyHKCjgvYBEBfYRNaOwH2BE6fLBAgQIECAAAECBAgMLyBwH95UiwTWLPDSER27MuCU2+ulr9l5v+aVsZ2xNbv/z2XIzW71S/k8ZQ5XfvbaHh+T41769r9r0J6jlRL2n+aApw+dBY7lToF7Zz43EiBAgAABAgQIECCwJgGB+5pm01gILE/g/siQjKD2awkWa44pWZ6KHj9T4DZQTz/O1840H5/Zt0fPTuBZe1b6UMfHdA3a43y88X00Nt+ft0DmUuA+7znSOwIECBAgQIAAAQIEJhIQuE8E7TEECEwmsH/hSbvytZT766W6CRCbF3FO1mkPGl2geUFpHnS5lnx+vj65+Th6R0Z4QNZxdrW/tMbvHxeHoY6PeVfaOpbS5mWogvYRFsAMmsw6ELjPYCJ0gQABAgQIECBAgACB5wsI3J8/B3pAgMAyBF46Tic9f+3r+V4C0JSXLkfsDDPvzY702xfEXkrTKbnOwzxmlq1kbX0oJee111yfSqUhjo/5srRzfGNtv9QXQXvNDC23TtaDwH2586fnBAgQIECAAAECBAgMKCBwHxBTUwQIEBhQYP9GW2+F/Le31da7f9TQL8vN8SWXCpvzXZ28cDRBenPdhuoVza26yjOOjxG0r3pJ9RrcsdwtcO9F6GYCBAgQIECAAAECBNYiIHBfy0waBwECBAhsQWBfBjn18TGC9i2srH5jFLj383M3AQIECBAgQIAAAQIrEhC4r2gyDYUAAQIEViuwKyOb+vgYQftql9PgAxO4D06qQQIECBAgQIAAAQIEliogcF/qzOk3AQIECGxFoO3xMTmn/fuOODmGKEF72kjIX3s5o71Wap31jmVYjpRZ59waFQECBAgQIECAAAECLQUE7i3BVCdAgAABAhMJ7Mtzao+PSZfel/KxlNtz72u7uisVm6A9oXvtJWivlVp3vWMZnsB93XNsdAQIECBAgAABAgQIVAoI3CuhVCNAgAABAhMJJPDO8TGHyucl9E7dS2X922q78h8JSmuf1dybF+EeSzl1eKZb1ieQtSBwX9+8GhEBAgQIECBAgAABAh0EBO4d0NxCgAABAgRGEnh3DbJrdpkn9O56fMzn13v3LcchaG8JtpHqAveNTLRhEiBAgAABAgQIECDwWEDg/thIDQIECBAgMLZAgu/sav+s8kFdjo/pej57uvRTKTmu5lTZP9W2JXAsw7XDfVtzbrQECBAgQIAAAQIECLwiIHC3NAgQIECAwPMEpjg+ZncNQ78oH2t2zt9qOKP9eWtjSU8WuC9ptvSVAAECBAgQIECAAIFRBQTuo/JqnAABAgQIvCow9vExeQnqoZR9hzn4VO7JjvZzh3vdsj2BYxmyHe7bm3cjJkCAAAECBAgQIEDgBQGBu2VBgAABAgSmFUgAPtbxMbvSdhO05/O213flhoSnl7Y3qr9pgawZgfuml4DBEyBAgAABAgQIECDQCAjcrQUCBAgQIDCNQJfjY/JS1B8rupeXoB5KybExba9fyw3ZzZ7yS9ub1SdQBI6lCNwtBQIECBAgQIAAAQIECBQBgbtlQIAAAQIExhdoc3xMAvAE7acH3dqV7/fZze5FqOPP+1aeIHDfykwbJwECBAgQIECAAAECDwUE7g+JVCBAgAABAp0FPit3fltKPtZc35RKCS/f2mneZzd7+pBjY06lnGs6pA6BCoGsWTvcK6BUIUCAAAECBAgQIEBg/QIC9/XPsRESIECAwPQCOT4mAWR2qtdcP1zrvnZ8zK58P7vkD6Wk7bbXz+WG07Vc2t6sPoEHAsfrer+v9r58Id9zESBAgAABAgQIECBAYDMCAvfNTLWBEiBAgMBEAjnmJeeh1wTjbx0fk/uzmz2hfe0O+fshJsg/XctEw/eYDQocy5jtcN/gxBsyAQIECBAgQIAAAQL/KiBwtyoIECBAgMAwAgnFP5Syr2zuteNjcn9C+7wAtSa0v39cQvxTKQn9L5V9UY1AH4FDuTlHJ91fn67ruE/b7iVAgAABAgQIECBAgMCiBATui5ounSVAgACBGQoMcXzMroyrzwtQw2I3+wwXx0a6tC/j/NsLY82azPdcBAgQIECAAAECBAgQ2IyAwH0zU22gBAgQIDCCQJ/jY4Y4MsZu9hEmVZOtBV4L3C+lpX9r3ZobCBAgQIAAAQIECBAgsGABgfuCJ0/XCRAgQOBpAm2Pj/mu9DRnsf9SSs5lz3Exhx69z1Ed35dy6tGGWwkMKfBfrzTm/9YcUllbBAgQIECAAAECBAjMXsD/EzT7KdJBAgQIEJiRQNvjY34qfU/QfinlXSkJ2ncdx/Nzue90LWnPRWBOAq8F7v+3dDK/aHIRIECAAAECBAgQIEBgEwIC901Ms0ESIECAwAACbY+PyUtL/7OUBO7ZEd/1yu74Uynnrg24j8AEAlmff3zhOX+ydifQ9wgCBAgQIECAAAECBGYjIHCfzVToCAECBAjMVGBX+vVtKfvK/mU3748t6r/UbHbGJ7DPsTF2B1fCq/ZUgXN5+kuB+1/K109P7ZmHEyBAgAABAgQIECBAYEIBgfuE2B5FgAABAosSyPExOQbmOFGvc2RMAvYE7ZeJnukxBIYSyM/J1y809n7Cn6GhxqIdAgQIECBAgAABAgQIdBYQuHemcyMBAgQIrFggZ61/KGU38hh/Le03Lz89j/wszRMYU+BYGn8pcM+RSIcxH6xtAgQIECBAgAABAgQIzElA4D6n2dAXAgQIEHi2wK50oM3xMV37+0O58VSKI2O6CrpvbgL70qG/vdCprPV8z0WAAAECBAgQIECAAIFNCAjcNzHNBkmAAAECFQLZnZsXnOYomTGuHBlzupbLGA/QJoEnCuzLs18K3PM+g39/Yr88mgABAgQIECBAgAABApMKCNwn5fYwAgQIEJihQILC7GrfjdA3R8aMgKrJ2Qr81ys9839vznbKdIwAAQIECBAgQIAAgaEF/D9AQ4tqjwABAgSWIpCd7Dmn/TBChx0ZMwKqJmcvIHCf/RTpIAECBAgQIECAAAECYwsI3McW1j4BAgQIzFHgXenUsZQhj49xZMwcZ1qfphS4lIf9/oUH/ql87TxlRzyLAAECBAgQIECAAAECzxIQuD9L3nMJECBA4BkCn5WHZlf7fsCHf1faystPU1wEtixwLoP/4wsAAvctrwpjJ0CAAAECBAgQILAxAYH7xibccAkQILBRgexkb3a1D0GQ3ewfSzmV8ssQDWqDwAoEBO4rmERDIECAAAECBAgQIECgn4DAvZ+fuwkQIEBg/gL70sWhXoqa3ewJ2RMsuggQ+GeB/FzY4W5VECBAgAABAgQIECCwaQGB+6an3+AJECCwaoHsak/Q/kXPUdrN3hPQ7ZsRyF995C9J7q//KF/I91wECBAgQIAAAQIECBBYvYDAffVTbIAECBDYpMAQL0W1m32TS8egewgcy71fv3D/+/K1fM9FgAABAgQIECBAgACB1QsI3Fc/xQZIgACBTQn0fSnqr0WrOZv9sik5gyXQXyChusC9v6MWCBAgQIAAAQIECBBYsIDAfcGTp+sECBAg8N8COTrm81K+KiWBe5frp3JTE7R3ud89BAj8Yxe7wN1KIECAAAECBAgQIEBg0wIC901Pv8ETIEBg0QIJ2XM++6HHKHJsTIL2H3u04VYCbQV25YbfX2/KL4nyS6Nct5+/9N9tn/Oo/rlUSPk00M/AsbQjcH+k7vsECBAgQIAAAQIECKxaQOC+6uk1OAIECKxOYFdG9GUph1LyeZfLS1C7qLmnjcAfr5X3r3xs09ZUdU/lQTlr/dLjgcdyr8C9B6BbCRAgQIAAAQIECBBYvoDAfflzaAQECBDYgkBC9uxmT+ly5Wz270uxm72LnnteEkionp3p2ZW+u5b7HepLlDuWTn9Tyi8dOp97Be4d4NxCgAABAgQIECBAgMB6BATu65lLIyFAgMDaBBJivivlUEpz5EbbMf5QbjiVkrC9S4DY9nnqr0sg6+4PpTRB+r58nnWZsubrUgb3l1LOLQd5LPUF7i3RVCdAgAABAgQIECBAYF0CAvd1zafRECBAYA0COZv9UErX3ewxyJnUeYnqZQ0gxjCJQHas70pJuN6Urr/omaTDEzwk7zY4XX+ean6WjqWuwH2CifEIAgQIECBAgAABAgTmKyBwn+/c6BkBAgS2JJBgM8fGJCTf9Rh4zmc/lHLu0YZb1y2Q9ZUXlu5LaY6DyUfX2wIJ3/OXIvnZyhFN+e/bvwCIYUxf+vnN2fBHwAQIECBAgAABAgQIENiCgMB9C7NsjAQIEJivQAK7HBuToL3vbuKcO51Qz9Ex853vqXuW8Lc5EmZfPp/LGetNYB2Py7Xcf57/Tqg91nrOz9vh+jPz25EnRuA+MrDmCRAgQIAAAQIECBCYj4DAfT5zoScECBDYmkCOnhgiaP/pGhwmnHRtVyBhehOuP/tImKzJBOVNYN58vJSvpczpSvD+sZT8hclY159Kw+exGtcuAQIECBAgQIAAAQIE5iQgcJ/TbOgLAQIEtiGQYO9Yyq7ncLNLOO0kLHRtS+A+XN8/Yfg5vuhSSsL024/5fIlXDE+l5LidIa/88sGRPUOKaosAAQIECBAgQIAAgVkLCNxnPT06R4AAgVUJ7Mpovi0lwV7f64fSwKGUS9+G3D97gbzMtNmxnjU0xPppM+gExllnCdabnernNg0srG5+ro6lDBG8+zld2OTrLgECBAgQIECAAAEC/QUE7v0NtUCAAAECjwW+KFUStvc9pz272hMI5uWNrnUJ7K4h7758TMCe/55yZ3SzY/1cnnu7a31dyvWjaV6Cmp+3HNXT5vp0/Rk9tblJXQIECBAgQIAAAQIECKxBQOC+hlk0BgIECMxbIGe1HwfoopeiDoA4gybyS5fmrPVd+bwJdqfsWnatNzvWb3euT9mHJT0r85RfmjXzlY/NDvjsYm/Oqz9fXcd60euSzPSVAAECBAgQIECAAIGNCgjcNzrxhk2AAIGJBPJS1A89n5Wdx4dSEua5liOwK11NKHu7Wz2f9/0rh7YCCYTvw/W2bahPgAABAgQIECBAgAABAgSqBATuVUwqESBAgEAHgX25528d7ru95X35j2PPNtw+nkAC9N+WkrnOdf9xvCe/3LJwfWpxzyNAgAABAgQIECBAgACBfxIQuFsQBAgQIDCWwP8rDXfdzexli2PNSl27eVFprsxfc4767e70fV0zo9XKWf7ZtX6+fmzOXB/tgRomQIAAAQIECBAgQIAAAQI1AgL3GiV1CBAgQKCtQALZLrvbE6QeS/nY9oHqPxRodqOnYhOe3wbqu/L1lLld9y8zFa7PbYb0hwABAgQIECBAgAABAgT+R0DgbjEQIECAwBgCx9JoXpba9kqY2ryAsXnx4qV8LSVXE762bXct9ZsXjjbjuT8TfX8z0F35PGVJV/6yIXN9e+a6F3AuaQb1lQABAgQIECBAgAABAhsXELhvfAEYPgECBEYSyA71dyO1fdtswtmU5rr/73z9pa/l60OE97e7xmuGu3+lUtuv1zxrznV+us5LE6xnjvK5iwABAgQIECBAgAABAgQILFpA4L7o6dN5AgQIzE4gO7C/LeWL2fVMh54h0OxYbwJ1wfozZsEzCRAgQIAAAQIECBAgQGAyAYH7ZNQeRIAAgdULZEf7sZSuL0pdPdAKB9j8lUCC9NvSHA20wiEbEgECBAgQIECAAAECBAgQeF1A4G51ECBAgEBfgV1pILva930bcv9sBHLkS3N2+vnaq0v5mJJLoD6bqdIRAgQIECBAgAABAgQIEJiTgMB9TrOhLwQIEFieQJtd7Z/K8E6l5Nzz3bW0PQN9eULz6fFtiH4p3UrJdb5+bF5WO58e6wkBAgQIECBAgAABAgQIEFiYgMB9YROmuwQIEJiJwK7046+lJDB/dOXYka9K+f6NijmG5rat/U3dfL05pmbrAf2vxeL25aKX8t8pzXW++VyA/mhl+j4BAgQIECBAgAABAgQIEBhYQOA+MKjmCBAgsAGBQxnjh1Jqzmp/X+p9LKU5nmRontswPm3f/3e+truW+2fn67/v2aHbXeM1TZ1fqdT26zXPUocAAQIECBAgQIAAAQIECBCYWEDgPjG4xxEgQGDBAgnYc1b7FxVj+KHUya72293YFbepQoAAAQIECBAgQIAAAQIECBBYroDAfblzp+cECBCYUiA7xxO2PzpCJkeeHEvJrnYXAQIECBAgQIAAAQIECBAgQGBTAgL3TU23wRIgQKCTQHa0J2x/dIRMdrUfSrl0eoqbCBAgQIAAAQIECBAgQIAAAQILFxC4L3wCdZ8AAQIjCyRAT9j+1mVX+8iToHkCBAgQIECAAAECBAgQIEBgGQIC92XMk14SIEDgGQI1YXteGpp6zmp/xgx5JgECBAgQIECAAAECBAgQIDArAYH7rKZDZwgQIDAbgZzV/rdS3jpG5pvy/bwY1UWAAAECBAgQIECAAAECBAgQIFAEBO6WAQECBAjcCyRk/3spu1docoRMgvYTOgIECBAgQIAAAQIECBAgQIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg==';
+
diff --git a/vue-options-api-demos/inputs/signature/overview/styles.css b/vue-options-api-demos/inputs/signature/overview/styles.css
new file mode 100644
index 00000000..37703aeb
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/overview/styles.css
@@ -0,0 +1,59 @@
+.content-wrapper,
+.content-wrapper img {
+ width: 750px;
+ height: 250px;
+}
+
+.example {
+ display: flex;
+ justify-content: center;
+}
+
+.toolbar-tool {
+ display: flex;
+ gap: 8px;
+ align-items: center;
+}
+
+.k-signature,
+.notes, .placeholder {
+ border-color: rgba(0, 0, 0, 0.08);
+ border-width: 0 1px;
+ border-radius: 0;
+}
+
+.k-upload .k-dropzone {
+ padding: 0;
+}
+
+.signature-wrapper {
+ height: 270px;
+}
+
+.signature-wrapper .k-signature {
+ width: 100%;
+ height: 100%;
+}
+
+.signature-wrapper img {
+ user-select: none;
+}
+
+.placeholder {
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ border-width: 1px;
+ border-bottom-width: 0;
+ border-style: solid;
+}
+
+.notes {
+ font-style: italic;
+ border-width: 1px;
+ border-bottom-width: 0;
+ border-style: solid;
+ padding: 1em;
+}
diff --git a/vue-options-api-demos/inputs/signature/popup/disabled/main.js b/vue-options-api-demos/inputs/signature/popup/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/popup/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/popup/disabled/main.vue b/vue-options-api-demos/inputs/signature/popup/disabled/main.vue
new file mode 100644
index 00000000..730561f0
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/popup/disabled/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/popup/disabled/sample-signature.js b/vue-options-api-demos/inputs/signature/popup/disabled/sample-signature.js
new file mode 100644
index 00000000..82d3e903
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/popup/disabled/sample-signature.js
@@ -0,0 +1,2 @@
+export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEgQIAAga0KCNy3OvPGTYAAAQIECBAgQIAAAQJbE8gLUT+0DNodH7O1VWK8BAgQINBLQODei8/NBAgQIECAAAECBAgQIEBg9gIJ2t+VknPX83nN9dO1/rmmsjoECBAgQIDAPwQE7lYCAQIECBAgQIAAAQIECBBYr8CXZWgfS6kN2nNO+7GU03pJjIwAAQIECIwnIHAfz1bLBAgQIECAAAECBAgQIEDgWQJflAfn+JhdZQd+LfUSzB8r66tGgAABAgQIvCAgcLcsCBAgQIAAAQIECBAgQIDAegT2ZSh5IWo+1lxN0J6w/ZeaG9QhQIAAAQIEXhcQuFsdBAgQIECAAAECBAgQIEBg+QK7MoTsaM/O9trru1LxWMql9gb1CBAgQIAAgbcFBO5WCAECBAgQIECAAAECBAgQWK7ArnQ9O9oPLYbww7W+oL0FmqoECBAgQKBGQOBeo6QOAQIECBAgQIAAAQIECBCYl0BegvqulK9KqX0haoL2YynneQ1FbwgQIECAwHoEBO7rmUsjIUCAAAECBAgQIECAAIFtCCRoT3BeG7T/fK1/2gaPURIgQIAAgecJCNyfZ+/JBAgQIECAAAECBAgQIECgjcCX1+B8V3lTXoiaHfCC9kow1QgQIECAQF8BgXtfQfcTIECAAAECBAgQIECAAIFxBfal+bwQ9bPKxyRo/3gtv1TeoxoBAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAgREEErAnaN+3aPu7Uje72gXtLdBUJUCAAAECQwkI3IeS1A4BAgQIECBAgAABAgQIEBhGYFea+bqUQ4vmPl2D9kuLe1QlQIAAAQIEBhYQuA8MqjkCBAgQIECAAAECBAgQINBRIC9BTdCeHeq11w+l4rGUc+0N6hEgQIAAAQLjCQjcx7PVMgECBAgQIECAAAECBAgQqBFI0P6ulATt+bzm+rlUOpRyrqmsDgECBAgQIDCNgMB9GmdPIUCAAAECBAgQIECAAAECLwl8Wb54LGVXyZOgPfVPlfVVI0CAAAECBCYUELhPiO1RBAgQIECAAAECBAgQIEDgKvBF+ZgXou4qRX4t9T5eixeiVqKpRoAAAQIEphYQuE8t7nkECBAgQIAAAQIECBAgsGWBfRl8zmnPx9rrvaC9lko9AgQIECDwXAGB+3P9PZ0AAQIECBAgQIAAAQIEtiGwK8PMjvbsbK+9visVj6Vcam9QjwABAgQIEHiugMD9uf6eToAAAQIECBAgQIAAAQLrFtiV4WVH+6HFMH8odfMC1R9b3KMqAQIECBAgMAMBgfsMJkEXCBAgQIAAAQIECBAgQGB1Ar8rI3p3Dc7zec2VoP1YyrmmsjoECBAgQIDA/AQE7vObEz0iQIAAAQIECBAgQIAAgWULZEd7dqjXBu0/X4P207KHrfcECBAgQICAwN0aIECAAAECBAgQIECAAAECwwh8eQ3Od5XN/Xqt/7GyvmoECBAgQIDAzAUE7jOfIN0jQIAAAQIECBAgQIAAgdkL7EsP80LUzyp7mqA9IXvKL5X3qEaAAAECBAgsQEDgvoBJ0kUCBAgQIECAAAECBAgQmKVAgvYcH5OPtdd3pWKOmxG014qpR4AAAQIEFiQgcF/QZOkqAQIECBAgQIAAAQIECMxCYFd6kaD90KI3n65B+6XFPaoSIECAAAECCxMQuC9swnSXAAECBAgQIECAAAECBJ4mkJeg5uiYNkH7D6X+sZTz03rtwQQIECBAgMBkAgL3yag9iAABAgQIECBAgAABAgQWKpCg/V0pOQomn9dcP5dKh1LONZXVIUCAAAECBNYhIHBfxzwaBQECBAgQIECAAAECBAiMI5Cg/VhKm6A99U/jdEerBAgQIECAwJwFBO5znh19I0CAAAECBAgQIECAAIFnCXx5Ddp3lR34tdT7eL2n8hbVCBAgQIAAgbUJCNzXNqPGQ4AAAQIECBAgQIAAAQJ9BPbl5pzT/lllI03QnrD9l8p7VCNAgAABAgRWKiBwX+nEGhYBAgQIECBAgAABAgQItBJI0P51KflYe31XKh5LudTeoB4BAgQIECCwbgGB+7rn1+gIECBAgAABAgQIECBA4G2BXfl2gvZDC6hPpW5eoCpob4GmKgECBAgQ2IKAwH0Ls2yMBAgQIECAAAECBAgQIHAvkJeg5uiYNkH7D6X+sZQzTgIECBAgQIDASwICd+uCAAECBAgQIECAAAECBLYkkKD9XSnZoZ7Pa66fr/W/r6msDgECBAgQILBdAYH7dufeyAkQIECAAAECBAgQILA1gRwd0zZoP5Z7TluDMl4CBAgQIECgm4DAvZubuwgQIECAAAECBAgQIEBgOQJflq4mON9VdvnXUu/jtfxSeY9qBAgQIECAAIHfCNwtAgIECBAgQIAAAQIECBBYq8C+DOxbQftap9e4CBAgQIDA/AQE7vObEz0iQIAAAQIECBAgQIAAgX4CCdpzfEw+1l7flYrHUi61N6hHgAABAgQIELgXELhbEwQIECBAgAABAgQIECCwFoFdGciHUr5oMaBPpW7OdRe0t0BTlQABAgQIEHhZQOBuZRAgQIAAAQIECBAgQIDA0gUStGdH+6HFQH4odY+lnFvcoyoBAgQIECBA4E0BgbsFQoAAAQIECBAgQIAAAQJLFfhd6fi7a3BeO4afS8WDoL2WSz0CBAgQIECgjYDAvY2WugQIECBAgAABAgQIECAwB4EmaM9RMPm85krQfizlVFNZHQIECBAgQIBAFwGBexc19xAgQIAAAQIECBAgQIDAswS+LA/+WEpt0P7rNWjPPS4CBAgQIECAwKgCAvdReTVOgAABAgQIECBAgAABAgMJJGg/lrKrbC9Be0L2lF8q71GNAAECBAgQINBLQODei8/NBAgQIECAAAECBAgQIDCywL60/6GUz1o857tSN8fNCNpboKlKgAABAgQI9BcQuPc31AIBAgQIECBAgAABAgQIDC+QoP3rUvKx9krQfizlUnuDegQIECBAgACBIQUE7kNqaosAAQIECBAgQIAAAQIE+grsSgPZ0f5Fi4Z+KHWzo/3HFveoSoAAAQIECBAYXEDgPjipBgkQIECAAAECBAgQIECgg0CC9uxoP7S4N0H7sZRzi3tUJUCAAAECBAiMJiBwH41WwwQIECBAgAABAgQIECBQIfC7UidBe3ao114/X+t/X3uDegQIECBAgACBKQQE7lMoewYBAgQIECBAgAABAgQI3AskaH93Dc7zec2VoP1YyqmmsjoECBAgQIAAgakFBO5Ti3seAQIECBAgQIAAAQIECDQ72muD9l8L2cdr2E6PAAECBAgQIDBbAYH7bKdGxwgQIECAAAECBAiMIrArrf6+lM9KSdi5v3lKvpfSXHkB5ftSHNsxylRsstEvy6iPd+vsLYgmaE/Y/ssmxQyaAAECBAgQWJSAwH1R06WzBAgQIECAAAECBFoJJFD/Yyn7UhKw52PbKyHnv5dyaXuj+gRuBNoG7bn1m1KOpQjaLSUCBAgQIEBgMQIC98VMlY4SIECAAAECBAgQeCjQBOxflJr7UnYP76ir8OdSzS73Oiu1/lkg6zDHx+Rj7fVdqXgs5VJ7g3oECBAgQIAAgbkICNznMhP6QYAAAQIECBAgQKCbwK7cll3sCdlTxrgE7mOorrvNfRle26D9h3LPoZTLummMjgABAgQIEFizgMB9zbNrbAQIECBAgAABAmsVyE72HNGRcDJHxYx9/ak84Dz2Q7S/CoFdGcWHUtr88idB+9EaW8X8GwQBAgQIENi8gMB980sAAAECBAgQIECAwIIEErKPuZP9NQr/f8OCFsmTupqgPTvaDy2e/1Op+5WgvYWYqgQIECBAgMDsBfwfzrOfIh0kQIAAAQIECBDYuECCzHfXIDM724e4sqP4ci0/lo95KeVfS3mp/U/l6212Kw/RP20sRyBrJkF7gvPa6+dS8VjKqfYG9QgQIECAAAECSxEQuC9lpvSTAAECBAgQIEBgawLNkTH7ngPPLuKE6udrubzQXsLPhKYvXc5v7zkBK709QXt+EZSgvfYXQYL2lS4GwyJAgAABAgT+V0DgbjUQIECAAAECBAgQmI9AE2IeSpd2Hbv1a7nv+2s5l4/Zvf7WlTPg//5KhQSkXfvRsftuW4BAs6O9NmjPmvxYynEBY9NFAgQIECBAgEAvAYF7Lz43EyBAgAABAgQIEBhEIKF3c2xMlwYTjN+G7LVtJDBN2L575QYvS62V3Ea9/NXF8Y31cq/QBO0J2x/94mcbgkZJgAABAgQIrF5A4L76KTZAAgQIECBAgACBGQt8XvqWIzn2HfrY7GRPmJkjY9peCdv/VkrC/peunPPepV9t+6H+/AXaBu0Z0TelHEsRtM9/fvWQAAECBAgQGFBA4D4gpqYIECBAgAABAgQIVAgk6E7QnjByV1H/vkpeYnoqJTva+1wJ2/evNJAwP30TlvYRXv69WR8fSnntlzIvjfC769q+LH/4RkCAAAECBAgQaC8gcG9v5g4CBAgQIECAAAECXQS6vGSyeU4C8FMp2c0+RJD5bWnn8MYgHCXTZYbXc8++DCXntOdj7ZW/iMiaGmJ91j5TPQIECBAgQIDA7AQE7rObEh0iQIAAAQIECBBYmcCujCfhZcLItldCzNO1tL33tfqPwvb35cbjUA/TzqIEspM9O9r3LXqdNZr1cm5xj6oECBAgQIAAgdUKCNxXO7UGRoAAAQIECBAg8GSBhJZtdwk3Xc6xHF3PZn9t2Nlh/9dS0q/Xrjz38GQ3j59eYHddq23mXtA+/Tx5IgECBAgQILAAAYH7AiZJFwkQIECAAAECBBYlkBdMJrjct+z1z6X+qZQE7UOfnZ6dywnbd2/0SdjecsJWUD3roe1fX2SdHq9rdQUEhkCAAAECBAgQGFZA4D6sp9YIECBAgAABAgS2KdDnRag/FbKE7KeR6L4o7eYYmfTxtSt9aPNizJG6qtmJBLIWErR/1eJ5gmpWyTgAACAASURBVPYWWKoSIECAAAEC2xUQuG937o2cAAECBAgQIECgv0CfF6GOfSTHrgwv53EncH/rSti+L2XoXfX9dbUwtECX9ZoX9uYXQsehO6M9AgQIECBAgMAaBQTua5xVYyJAgAABAgQIEBhbYFce0PYojqZPObol4eVlxE6+uz7jrV3tefynUg6lCNtHnIwZNN0naB/jiKMZkOgCAQIECBAgQGAcAYH7OK5aJUCAAAECBAgQWKfAvgyrOaO9zQibXcJjh5e70qkcH5N+Prq+KRXaHCnyqD3fn6dA7S9fmt5PtVbnqaVXBAgQIECAAIGeAgL3noBuJ0CAAAECBAgQ2IRAAuzsaM/HNlfOvW7OZx97F3n6d6zoXALVBO2nirqqLFcgvxjKeti1GMIUf33RojuqEiBAgAABAgSWJyBwX96c6TEBAgQIECBAgMB0As1u9n3LR479ItTb7qRv2dVeE6ymX4dSfmw5HtWXIyBoX85c6SkBAgQIECCwQgGB+won1ZAIECBAgAABAgR6C3QJLfPQsV+EejuwBOy1x8fkvvelHHvLaGCuAl3WbM7wz187XOY6KP0iQIAAAQIECCxNQOC+tBnTXwIECBAgQIAAgTEFuoSW6c+UR3HkBZg5Pqb2/PX8EiB17Wofc+U8r+39dT3kY+015S+GavukHgECBAgQIEBgFQIC91VMo0EQIECAAAECBAj0EEiA/Xkpx1J2LdrJWeinUnJG+6XFfX2q5hcCeV76/OhK/zKm1HetT2BfhtT2vQKC9vWtAyMiQIAAAQIEZiYgcJ/ZhOgOAQIECBAgQIDAZAIJrd+Vkt3fNQF207EE2QmxU8Z+EWrzzISrH0r5rFInweqhlEtlfdWWI5C1IGhfznzpKQECBAgQILAxAYH7xibccAkQIECAAAECBP47XO8StP9c7juWcprQMAF7gvaErDVX+phfIHxfU1mdRQlkDbQN2p+xZheFqrMECBAgQIAAgaEFBO5Di2qPAAECBAgQIEBgrgJLCtp313D1UInZ7Lo/VtZXbTkCgvblzJWeEiBAgAABAgR+I3C3CAgQIECAAAECBNYusKSgPX3NjvbaoD1zN+ULW9e+VuY0PkH7nGZDXwgQIECAAAEClQIC90oo1QgQIECAAAECBBYn0DVoz/nnOZ99ymNZuvTVCzAXtySrOrwrtXJ0zKGq9j8qOTqmBZaqBAgQIECAAIExBQTuY+pqmwABAgQIECBA4BkCXcLr9PNZAXbC1TYvbs3xMal/egauZ44msCsttw3an/EC39EANEyAAAECBAgQWIOAwH0Ns2gMBAgQIECAAAECjcCX5ZNjKQkva69nBe1t+ypcrZ3RZdXLWhW0L2vO9JYAAQIECBAg8KqAwN3iIECAAAECBAgQWINA2/A6Y15K0J6+vi8lx9z8sobJMob/FtiVImi3GAgQIECAAAECKxMQuK9sQg2HAAECBAgQILAxgbUH7V6Iur4FLWhf35waEQECBAgQIEDgfwQE7hYDAQIECBAgQIDAEgXWHrR/KpOSc9ovS5wcfX5R4LPy1XelHFr4OEaoBZaqBAgQIECAAIE5CAjc5zAL+kCAAAECBAgQIFArsC8VP5SS8LL2WtLRMc/qa62leu0FsmZzdEw+1l6C9lop9QgQIECAAAECMxMQuM9sQnSHAAECBAgQIEDgRYEuoeWzwusl7b633MYT6LJmBe3jzYeWCRAgQIAAAQKTCAjcJ2H2EAIECBAgQIAAgY4C2cmeHe0JL2uvn0rFHMdyrr1hoHqC9oEgF95M1qod7QufRN0nQIAAAQIECHQVELh3lXMfAQIECBAgQIDAmAK7a2h5aPGQn0vdYymnFvf0rfq70sDn1+emz7XXs3bf1/ZPvfYC+YVL1uu+xa12tLfAUpUAAQIECBAgsAQBgfsSZkkfCRAgQIAAAQLbEdiVoWZ3cILL2utZQXtegJmd9Anday9Be63Ucup1+csGQfty5ldPCRAgQIAAAQKtBATurbhUJkCAAAECBAgQGEkgoXXbAFvQPtJkaPahQNe/bBC0P6RVgQABAgQIECCwbAGB+7LnT+8JECBAgAABAksX6BK0J7Q8lvJxwsF36We6Z0f7hJM0waO6rgNB+wST4xEECBAgQIAAgTkICNznMAv6QIAAAQIECBDYpkDbozieEVp2DVgF7eta07synLZHHUXgGWt2XfJGQ4AAAQIECBBYmIDAfWETprsECBAgQIAAgRUI7MsYvi0lIWbt9b5UzI72X2pvGKBefiGQZzqjfQDMhTaRtdq8DLXNEJrjjr6feM226aO6BAgQIECAAAECIwgI3EdA1SQBAgQIECBAgMCLAgkvs0s4H2uv70rFYymX2hsGqNd2530eaUf7APAzaqIJ2dus1XT/Ge8VmBGbrhAgQIAAAQIECAjcrQECBAgQIECAAIGxBXblAW2P4xC0jz0r2r8XyF8yJGj/qpSs2TZXfuFyupY296lLgAABAgQIECCwMgGB+8om1HAIECBAgAABAjMSSID5oZRDiz49Y6f4/trPz2bezxbdU7WFwK7UfXddp22OD8ojnrFeWwxNVQIECBAgQIAAgakFBO5Ti3seAQIECBAgQGD9Al1eNPpTYcnO4vOEPPvyrLZH3AhYJ5ygkR+V+U/Q/kWH5zzjLzA6dNMtBAgQIECAAAECUwsI3KcW9zwCBAgQIECAwLoF2r5o9BlnXu/KFOSlrQlcay9Be63U/Os1x8a0+YuGjOrXUk6l5EW6l/kPUw8JECBAgAABAgSeISBwf4a6ZxIgQIAAAQIE1iewL0NKiL2rHFrCy+M1vKy8pXe19K3tWfLP2Hnfe6Aa+BeBzH0TtLc9Nia/FErIfirlF7YECBAgQIAAAQIE3hIQuFsfBAgQIECAAAECfQSySzjntO8rG0nQnvAyZarwMgFrgvYcWVN7PWPnfW3f1KsXyLpM0H6ov+V/anoRagc0txAgQIAAAQIEti4gcN/6CjB+AgQIECBAgEA3gV25re1u8anPve5ylrygvdt6mNtdXY+NyTiyTk+lnOc2KP0hQIAAAQIECBCYv4DAff5zpIcECBAgQIAAgTkJdAmxs1P4UMplwoHkZZjHUmqPD2l23uce1zIFdqXbXY+NcT77MudcrwkQIECAAAECsxMQuM9uSnSIAAECBAgQIDBbgbYvRH3Gi0bTx4TmCV9rrmcccVPTL3XqBfalatdjY5q/aPi+tDHVEUf1I1OTAAECBAgQIEBgcQIC98VNmQ4TIECAAAECBCYXSKDZ5oWozziWpW0fg/hNKUdB6+TraYgH5i8XPr/O365Dg/llUN4jkKDdRYAAAQIECBAgQGAwAYH7YJQaIkCAAAECBAisTqDrC1GPE0rsy7Nylnw+1l5TnyVf2y/1HgvsrvP9RflYe1xQ02r+miEBe9bn5fGj1CBAgAABAgQIECDQXkDg3t7MHQQIECBAgACBtQskyPxQyqHFQKfeLb679jHBa+31jLPka/um3tsC2c3+VSn7DlD5i4vsZj+V4tiYDoBuIUCAAAECBAgQqBcQuNdbqUmAAAECBAgQ2IJAdosn2KzdPfzpWv8yEc6uPCd9PLR43jPOkm/RPVVfEchcN2ez5/O2l2Nj2oqpT4AAAQIECBAg0FtA4N6bUAMECBAgQIAAgVUItH3Z6NQhdn4B8K6UYwvt7Gw+lHJucY+qzxfYly50fQmqY2OeP396QIAAAQIECBDYtIDAfdPTb/AECBAgQIAAgf8+oqPNGehTvxC1Cdrb7Lqfuo+WUX+Bvi9BbeY8Z7Q7Nqb/fGiBAAECBAgQIECgo4DAvSOc2wgQIECAAAECCxfYXYP2Q+U4snM452AfK+sPUS27nPPM2uNtntHHIca55TbyYt785UKXl6DGLS/APZVy3jKisRMgQIAAAQIECMxHQOA+n7nQEwIECBAgQIDAFAJddown1MwO86l2Drc93qYJ2hPOT9XHKeZqzc9ojozZdxhkdrMnZE+5dLjfLQQIECBAgAABAgRGExC4j0arYQIECBAgQIDA7ATaBtk5p/0wYai5L8/6UEp2PddeU/8yoLZf6v2rwK58KbvZs6Zq/2rhtpWsx9O18CVAgAABAgQIECAwSwGB+yynRacIECBAgAABAoMK7Etrbc9pTyh6HrQXrzfWtn9pKUH7sZTLRH30mO4CfXazNy9BzV8v/Ni9C+4kQIAAAQIECBAgMI2AwH0aZ08hQIAAAQIECDxDYFcemqD9UPnwhJvHUhJuTnFlJ3t2tO9bPCy7nHO8jfC1BdoTqmbtNUF7Pm97eQlqWzH1CRAgQIAAAQIEZiEgcJ/FNOgEAQIECBAgQGBQgS7ntH9TenAsZYoz0BPAtvlFQHAStKd/50GlNDa0wOelwUMpeQlql8tLULuouYcAAQIECBAgQGA2AgL32UyFjhAgQIAAAQIEBhFoe077p/LU7Bi/DPL0txvZlW+3Ddqz0zn9+36C/nlEN4HMa9/d7KfShpfedvN3FwECBAgQIECAwIwEBO4zmgxdIUCAAAECBAj0EGh7PMtP1yD73OOZtbdmx32C9gTntVdzpMip9gb1Jhfou5s9v+zJ/PplyuRT54EECBAgQIAAAQJjCQjcx5LVLgECBAgQIEBgGoGE2TkH/VD5uJzTnuA7QefYV5ejbaY+R35sg7W1vysDGmI3e9bfZW04xkOAAAECBAgQIEBA4G4NECBAgAABAgSWK9DsGk+wXXO9L5WmOLaja9Cevk3Rvxordf5ZoO9u9pzBf7oWtgQIECBAgAABAgRWKyBwX+3UGhgBAgQIECCwYoG8kDK72neVY0zYeSjlUlm/azVBe1e5ed6X+cxu9vxFRO1aux1J/lrhVEp+iTL22punoF4RIECAAAECBAhsTkDgvrkpN2ACBAgQIEBgwQIJPb8tZV85hpyDfijlXFm/T7UEswlWa3fb51nflXIs5dLnwe4dXCDrqzk2pkvjdrN3UXMPAQIECBAgQIDAKgQE7quYRoMgQIAAAQIEVi7Q9qWjU56DnmA2ofmuxRwI2ltgTVQ189fnbHa72SeaKI8hQIAAAQIECBCYt4DAfd7zo3cECBAgQIAAgbY7x7+5BuC/jEwnaB8ZeKLm+57N/lPpZ/6y4TRRfz2GAAECBAgQIECAwKwFBO6znh6dI0CAAAECBDYssC9jzzntn1UaTHVOe5egPX07lnKuHItq4wpkTTW72dscAdT0KrvZvy8lQfuP43ZV6wQIECBAgAABAgSWJSBwX9Z86S0BAgQIECCwfoFdGeLXpRwqh5pz2vNSywSgY16C9jF1x28766rZzV77S5z7XjW72bPWxv4LivFFPIEAAQIECBAgQIDACAIC9xFQNUmAAAECBAgQ6CiQoD3hec2u4+wyzg7jY8dn1d4maK+Vml+9rKOE7F9cS5ce2s3eRc09BAgQIECAAAECmxUQuG926g2cAAECBAgQmJFAAtEcH7Or7NMULx0VtFdOxgyr3YbsNb+8eWkIdrPPcGJ1iQABAgQIECBAYP4CAvf5z5EeEiBAgAABAusVSMD+bSn7yiFOcRa6oL1yMmZWre+57BlOdrOfrsXZ7DObYN0hQIAAAQIECBBYhoDAfRnzpJcECBAgQIDAugSy67g5PqZmZAlCc9RMwtAxrubokWNpfNfiATk/PveM1a8WXdlk1SZkz19ItJm3e6xP5Qs5l908bnIZGTQBAgQIECBAgMCQAgL3ITW1RYAAAQIECBB4LJAd5Dl7vfaoj/fX+mO8pDJ9eFdK7bnxzegE7Y/neawau9Jw35efpm+Zw6zDBO2XsTqrXQIECBAgQIAAAQJbExC4b23GjZcAAQIECBB4lsC+PDi72vOx5srxMYdSLjWVW9YRtLcEe3L1zFd+UZP1kF3tXS9HxnSVcx8BAgQIECBAgACBSgGBeyWUagQIECBAgACBjgIJS/NC1ISlNVd2HqfuuaZyyzq7Uj872tN+7Q77PMKO9pbQA1RvjvnJcTEpXa+E7NnF3pSu7biPAAECBAgQIECAAIEKAYF7BZIqBAgQIECAAIGOAs057TXhdoLRHPFx7Pist27blW+mL4eWbf907dOp5X2qdxdojovpE7Ln6c257AnaxziOqPsI3UmAAAECBAgQIEBgxQIC9xVPrqERIECAAAECTxPYlyd/W8qusgfflXo5R33oYDT9yI72tuFtjrM5lnKu7L9q/QQyTzkyJvNU88uZ156WX5CcrmXotdRvhO4mQIAAAQIECBAgsBEBgftGJtowCRAgQIAAgUkEduUpOT6mNuBOQJqg/Txw75rzvvct2xW0twTrUT1rpZmnfN71akJ2Lz/tKug+AgQIECBAgAABAgMKCNwHxNQUAQIECBAgsFmB5iWkx0qBHB+ToP1UWb+mWvNizbS7q7nhpo6gvSVYx+rNueyZoz4vP82Z+gnYs35+7NgXtxEgQIAAAQIECBAgMIKAwH0EVE0SIECAAAECmxLIbvbsat9VjvqbUu9YylBHfuS5XV6Emu7mKJucGy+0rZy8jtVyLnvWyaHj/bmtefmp+eqB6FYCBAgQIECAAAECYwsI3McW1j4BAgQIECCwVoFdGVjOad9XDjC7yLOzeahwO8/tcj57upug/VjKpbLvqrUXyProe2RME7JnN3uKiwABAgQIECBAgACBmQsI3Gc+QbpHgAABAgQIzE4gx4J8XUrC85orx3+k7lCBaULcLkeSJLzN7uhTKZeajqvTSaDr+fm3D/t0XS+ZKxcBAgQIECBAgAABAgsSELgvaLJ0lQABAgQIPFFgV579+xeen6+n3F+vff22XoLrPudYp63sFr89miWf3+4gv/3vBN+XnoYJUxNap++PribgTv2+x8fkec2xMS95v9WXjLsJ2vv249GYt/r9zEnXY30as7z8NPOUX8yYp62uJOMmQIAAAQIECBBYvIDAffFTaAAECBAgQOChwB9varwUcu/vWhgiCH/YqSdXuA3qz9e+NB8TfN4HnvnFQM5pv7d6bRjZoZxd6Jee49yV+7Ob/tChnRxhc7qWDre7pUIgZ7Nnbr6oqPtSleblpwna+66Vjl1wGwECBAgQIECAAAECQwoI3IfU1BYBAgQIEBhPIIHvb6/N3wfi+d7tjuv9eN3YVMsJQJsQtNY0AeqhlHNPqQS5Cexrn3v7uJzPfhqgDz2HsNrb87PWHOuz6zDK5lx2c9QBzy0ECBAgQIAAAQIE5i4gcJ/7DOkfAQIECKxR4DY8vw3Lbz/fwi7ztc1tgu5Dj0FlzhO0H0tpG+QmxE2Aa6d0jwl4cGvmJH9tkN3sNUcK3TfX/MWBI2PGmyMtEyBAgAABAgQIEHi6gMD96VOgAwQIECCwAoHbI1v2N+N57fMVDNkQXhHIUTQ5ruZ8LQlZH127UqHr+d/OZ3+k2//7ff7awC9C+vtrgQABAgQIECBAgMCiBATui5ounSVAgACBiQSye/UP12clDE3Jdfv5/TEuE3XNYxYocCp9zu73813f9+W/E7R3Of87QX7zgs0Fksy+y33+2iCDyxn+mffsZncRIECAAAECBAgQILAhAYH7hibbUAkQIEDgN81RLrfHteyKS0quPaNXBbJTNzu3769L+UJK7ddv6zW7wfuw3//i4/4ontv5vT3Kp88zu957Ljf+uZRmx3T60/ZKcJ+g/aW5aNuW+v8qkPXS9a8N7Ga3oggQIECAAAECBAgQ+I3A3SIgQIAAgTUINEe63IatTRDrLPTf/Ob+WJMEv7dXwtuE37fXfZ01rJPbMeyv/3EoH/MCzDlfCXITsqfcz9Oc+72kvmU9ZB1kPbS9frrOzantjeoTIECAAAECBAgQILA+AYH7+ubUiAgQILAmgSZI35VBpeTaXz/efm1NY35tLDmr+3LzzfPN5/eB+UsB+haM2owx6+dDKbXHuTS/tLg9bqjN87rUFeR2UWt3TxOyN/+utLk7f21wKuX2Z7HN/eoSIECAAAECBAgQILBCAYH7CifVkAgQILAQgSZMb3aiJwBN2cKO9Nvw/FLGnJLr/ogVQd44i/nr0uxX17X26AnZXZ66p7uKzXrdX9dt/vv25bmP2n3r+zn/O7vZzX8fxdfv7XM+e/PXBlkPzc/tOL3UKgECBAgQIECAAAECixQQuC9y2nSaAAECsxfYWpiencjNUR+3u8tf+3z2E7jSDu7LuL4tZVc5vm9KvePN3D66Le222TV/257zvx/p9v9+gvacz177y5bbJ/prg/7+WiBAgAABAgQIECCwCQGB+yam2SAJECAwqMBWwvTmCJHbXee3n1+Kaopr/gK70sU2QXjm/tBifvelbtfzv/PXDsdSvi/F+ezjrKXMf/6qIXPa9vLXBm3F1CdAgAABAgQIECCwcQGB+8YXgOETIEDgTqA5n7o51uX+49LBbo9yaXaf34bozj5f+gz/c/+bHc3HymFlfWT3c8LvR1efY0nSdkL9HBtT86xHffH9lwV25ctdgnZ/bWBFESBAgAABAgQIECDQWUDg3pnOjQQIEFikwFoD9dsjXc7XmbmUjym5mq8tctJ0upNAXoaaXe27yrvfl3oJwB/tMk97OZbkUEp+ntpe2TGdUL9Zm23vV/+xwL5USdCej22u/MIla+BUsQ7atKsuAQIECBAgQIAAAQIbEhC4b2iyDZUAgU0IrC1Qb4L0l3ah335tE5NrkFUCu1Ir57Tvq2r/Y6f5oZTLg/qfl+8nKK9t96XmsnM6/XsU6ld2XbU7gcxNl6Dd+eyWEgECBAgQIECAAAECgwkI3Aej1BABAgQmEVhToN6E6Qk6U24D9PMkmh6yJoExjo/ZFaDmbPZ83vfKLvpj30bc/y8C+/KVLkF7ftmS+fDvjUVFgAABAgQIECBAgMBgAgL3wSg1RIAAgcEEmlB9V1pM+ayUfC2h0lIuYfpSZmod/WxzfEx2mefYkOMbQ8/PWo6NSbtDXTmuJD/PruEEMk9dgvbvrvN/Ga4rWiJAgAABAgQIECBAgMA/BATuVgIBAgSeI5Dg7fel3IbpzQtKn9Oj+qcK0+ut1BxXID9HbY6Peev89Pz8ZTd7jo1Ju0Nf/14azEt5Xf0F9qWJtkG7F6H2d9cCAQIECBAgQIAAAQIVAgL3CiRVCBAg0FEgYfpvS0k41ITpSwjVm0D9fB33/ceOHG4jMJhAl+NjDuXpzVq+7Uh+PptjY7p0MCH+H0rZvXHzf5TvZVe9q59A5qpL0B77mhfi9uuduwkQIECAAAECBAgQIFAEBO6WAQECBPoJ/PF6e4KgJkzflc9T5no1gXp22zbnpt9+nGu/9YtABBKOJzzNz9uj67XjY/Lz2eds9qbd70s7OXrm8EZHcnzJW99/NAbf/8e/p23+kiFmzRwJ2q0gAgQIECBAgAABAgQmFRC4T8rtYQQILFQgYU9z/Es+z8715iiYOQ5JoD7HWdGnvgL5mftQyr6yofvjYxLQf17KoUUb94/KSzZP15L2/nb9t+C1LuVnMf3NL7Rc7QXy7212tGfOaq+clX8sJb8M4V6rph4BAgQIECBAgAABAoMJCNwHo9QQAQIrEMhu9WaX+u3Z6nMbmkB9bjOiP2MK5GcyoWvOVq+5ErgeSjlfK+/Lx+xm/+L6813Txm2d7JROeHss5XL9Rv59SNj+1i57YXtb6f+t3/bIoNzZBO2n7o91JwECBAgQIECAAAECBPoLCNz7G2qBAIFlCSTIyXnLt4H6rvx3ypyu7KS9P+7lUr6W4iKwFYG2x8ccC0yOEMnPc58jY+KbwDxt3e+UTvif57x1Cdu7r9Ac0RPfmiOD8hRBe3drdxIgQIAAAQIECBAgMIKAwH0EVE0SIDALgdtgfVd6lIB9P4ue/W8nbkP1S/lyyo+lOAZhZhOlO5MLtD0+JuekH0vJX6lkJ3tKl6vZzZ6gPT+Lt1f+Hak5Rzx9yW58P8ftZiD/Psc3zjXXa+fz19yrDgECBAgQIECAAAECBEYTELiPRqthAgQmFEg4l13rCWoS2uRjbWgzZjcTCCW0u1xLE6afx3yotgksWKDt8THZSd4c7XLoMe7XdrM3TSbATxj8aNf1N6VO7dE3Pbq7qlvzb3XNLzKaQXsZ6qqm32AIECBAgAABAgQIrE9A4L6+OTUiAmsWSDCTl5fuS0nInv/Ox2deOc7gUsp9mH5+Zqc8m8ACBdocH9MML7vIH4Xgr1HkZzfHxWQ3e36GX7rSdsLgmh3zfyn1Tgt0f1aXY9scH1Pbh/fX+fLXA7Vi6hEgQIAAAQIECBAgMLmAwH1ycg8kQKBSIEdD3Ibq+bxrsFb5yDer5fiXy7U0u9bvj5wY4jnaILA1gbbHx/T1yZEvCdpT3rpqfwGQ4D6BvH8P6mdmX6q2OT6mOTIo/wa7CBAgQIAAAQIECBAgMGsBgfusp0fnCGxGoDkSJiFMPn/WrvXb3eoJdm6Pg9nMZBgogYkE2h4f06dbj46MuW17V/6j9oiTT6XuoRQ7rutmJ3P+4WpWc0d+0Xks5VxTWR0CBAgQIECAAAECBAjMQUDgPodZ0AcC2xJowvUmWN8/YfgJ3y6lJFC/PwrmCd3xSAKbE6jdPd4HJmd9n66lZvd52yNO/qO0neNoXHUC+SuAmnPw01p++flVKY/+CqHuyWoRIECAAAECBAgQIEBgQgGB+4TYHkVggwLPDtfvg/Vmx/oGp8KQCcxCYOzjYxKyN8fFtAlr8wuAYym7CqX8u3IopSbEr2huE1XilbD90dW8EDVz4SJAgAABAgQIECBAgMAiBQTui5w2nSYwS4HsDs256/tSEqrl41RXQpqEX+dSLteSz10ECMxDYOzjY3K0SwL2U8vh5t+pr1v8e5WXdh5bPmPr1Q8FoCZszxxmV3v+DXcRIECAAAECBAgQIEBgsQIC98VOnY4TeLrA7bnrCa12E/WoeXlpcxxMcyTMRI/3GAIEWgqMdXxME7InaG973uQL5wAAIABJREFUhnr+vUrQfqgci13tlVB31eL7KGx3fEw3W3cRIECAAAECBAgQIDBTAYH7TCdGtwjMUOB+93p2rI553e5ab46CcYTDmOLaJjCswL4012b3eM3T8wu3UyldQva03/acdkec1MzKy3XyS9m/Xc1fa+Wb8o1jKW1/YdK9V+4kQIAAAQIECBAgQIDAyAIC95GBNU9goQK70u8/lLK/lgQnY1734bqz1sfU1jaBcQTy70Z+MZeXY+bfjqF+KZeQvTmX/dKx603QniNLavvliJOO2Nfb/l4+vva/Hfk3P+vk3O8R7iZAgAABAgQIECBAgMD8BATu85sTPSLwDIEEUJ9fQ7IEZbsROyFcHxFX0wQmFBjrWKn8G5EgtgnZ++5+bvNC1PDliJPDtQ8Tcq7qUR/LaN69MqLMb/53xl8srWrKDYYAAQIECBAgQIAAgUZA4G4tENiuwG3APtYOduH6dteXka9PYMxjpfJvRROw5+MQV9ugPX04lpKw2NVdYF9uzVEyL10xzv/eXLo3704CBAgQIECAAAECBAjMW0DgPu/50TsCQwrsSmPNcQ/5U/4xrrxYMLsWz9ciVBlDWZsExhfIX73k34uEo/trGfqp2UmecP10/XdjqPbT3w/Xvte2+b5UTNDedzd97fPWXC9he+bgpevP1zlf8/iNjQABAgQIECBAgACBjQsI3De+AAx/9QK7MsLsZD+UMsYu9pytfC6lCdmFVatfUga4UoH8W3G7g32Mfy9uj4rJvxuXgS33pb22L2n9rtxzHKEvAw9tMc3lf2u+faW3ORN/rF/2LgZIRwkQIECAAAECBAgQWL+AwH39c2yE2xNozmNPsDFkuNGEZQnKmoB9e7pGTGAdAvfh+m7EYSXUzu7xsc7s3pe22wbt+WXhsZT8e+YaTuA/S1MvraX870e+7peyw1lriQABAgQIECBAgACBmQoI3Gc6MbpFoINAwoyETgnZE7r3vXI8zLmUJly/9G3Q/QQIPEUgu9Wb42Hy+Ri7118aWP4N+er678gYA99f/83Lx9pL0F4r1b5e/rfnr6/c9pfy9VP7Jt1BgAABAgQIECBAgACB5QkI3Jc3Z3pM4F4gYdO7UvruZs95yudrybnKdiJaawSWJ5Aw/Q+lNMF6/n2Y+hr75aMZU9sd7fn37VjKaWqMDT0v/7uRI8zur9jvNuRgqAQIECBAgAABAgQIbFxA4L7xBWD4ixZIgJHQ6dBxFLdHxJxLG2Md99Cxe24jQOCBQP4NaML1ffk8IfsQf93SBz7Hx2RX+xi/sMsYBe19Zmfce//rlebtbh/XXesECBAgQIAAAQIECMxMQOA+swnRHQKVAodS70OHcC0he3YhNqXycaoRIPBkgWbn+q70Y1/KHML1W5Ixj4/JeAXtT16ADx7/1nEy/m/Nec+d3hEgQIAAAQIECBAgMLCA/ydoYFDNEZhA4NvyjEOL5wjZW2CpSuDJAtmhnl3rCZl3pUx95vq5PPP3pdQeUTXm8TExaBu0pz95QWvKGLvsn7w8Zvv443Wu7juYM/Mzjy4CBAgQIECAAAECBAhsRkDgvpmpNtCVCLwWarw0vBztYCf7SibeMFYpkDA94XY+JpScctd6ztXOMVIp52vZlY/5hV76UnONdXxMni9or5mB+dR57X+b3pcu5nsuAgQIECBAgAABAgQIbEZA4L6ZqTbQFQgkjPt7xTi+uQYcdndWYKlCYAKBP5Zn7K4lP8f5PB+nurLruwnWm4+3/z5kV31evHys7NBYx8fkhZs5/31f2Y9Us6O9BdaIVbN28kuS+0vgPiK6pgkQIECAAAECBAgQmKeAwH2e86JXBF4SeC3QeKR1fqFCQrf7QP6lr+U4ABcBAo8FdqVKs1s9nzdHwSTMnvrKz+3t7vXLGx3I0TF5H0T6/Oga6/iYL8uD8+9bTR+aPgraH83WtN/P/AncpzX3NAIECBAgQIAAAQIEZiogcJ/pxOgWgRcEXgs0psY63z0wwX3CvdvrUv4j5fbKERb3X5u6755HoI/ArtycUD0fU5ojYPZ9Gu15b3ab3+5ev/9ZfK359P/Zx8cI2ntO/oxuP5a+CNxnNCG6QoAAAQIECBAgQIDA8wQE7s+z92QCbQUSkCVM+23bG2dc/1L6lnJ71X6tOSZjxsPTtYUJ5GfsNlDPf9+WZw7n9liY/Iw0O9jb9mkOx8cI2tvO2vzrH0sXBe7znyc9JECAAAECBAgQIEBgAgGB+wTIHkFgQIHsqM2LUBMKul4WOL/w5Uv5Wsr99VLd1HGUzvpW1+7m56bZmZ6v3Za5jDq71rNeb3euD/FOhmcfH9MlaM9fxnws5VTKEAZzmeO19eNYBiRwX9usGg8BAgQIECBAgAABAp0EBO6d2NxE4OkCzYsF85JB1zQCLx2d0zz5/EoXLuXrKS9dCVUFiP3mLru1/3BtYlc+puRqAvV8P5/P9Wp2rTe71bNWXltLfcYQlzbHx3wq9Q8Drc9mR33+zWpznn2C9mMppz4Dd+9kApkrgftk3B5EgAABAgQIECBAgMCcBQTuc54dfSPwWKAJFPelahMy5uOajp15rLDOGucHw3r0/dz+1i8J3mp+6B3+u/Kwmr/KyDq+vZo13Xwt7aQs7WreX5A5a+YkIfvYv3Bpe3xM+nkopWZtPZoDQfsjoXV9/1iGI3Bf15waDQECBAgQIECAAAECHQUE7h3h3EZgQQL7F/pa+7U/Lmicukrg2QL5RcXlWhKo5/N8fMbV9viYHNtyHKCjgvYBEBfYRNaOwH2BE6fLBAgQIECAAAECBAgMLyBwH95UiwTWLPDSER27MuCU2+ulr9l5v+aVsZ2xNbv/z2XIzW71S/k8ZQ5XfvbaHh+T41769r9r0J6jlRL2n+aApw+dBY7lToF7Zz43EiBAgAABAgQIECCwJgGB+5pm01gILE/g/siQjKD2awkWa44pWZ6KHj9T4DZQTz/O1840H5/Zt0fPTuBZe1b6UMfHdA3a43y88X00Nt+ft0DmUuA+7znSOwIECBAgQIAAAQIEJhIQuE8E7TEECEwmsH/hSbvytZT766W6CRCbF3FO1mkPGl2geUFpHnS5lnx+vj65+Th6R0Z4QNZxdrW/tMbvHxeHoY6PeVfaOpbS5mWogvYRFsAMmsw6ELjPYCJ0gQABAgQIECBAgACB5wsI3J8/B3pAgMAyBF46Tic9f+3r+V4C0JSXLkfsDDPvzY702xfEXkrTKbnOwzxmlq1kbX0oJee111yfSqUhjo/5srRzfGNtv9QXQXvNDC23TtaDwH2586fnBAgQIECAAAECBAgMKCBwHxBTUwQIEBhQYP9GW2+F/Le31da7f9TQL8vN8SWXCpvzXZ28cDRBenPdhuoVza26yjOOjxG0r3pJ9RrcsdwtcO9F6GYCBAgQIECAAAECBNYiIHBfy0waBwECBAhsQWBfBjn18TGC9i2srH5jFLj383M3AQIECBAgQIAAAQIrEhC4r2gyDYUAAQIEViuwKyOb+vgYQftql9PgAxO4D06qQQIECBAgQIAAAQIEliogcF/qzOk3AQIECGxFoO3xMTmn/fuOODmGKEF72kjIX3s5o71Wap31jmVYjpRZ59waFQECBAgQIECAAAECLQUE7i3BVCdAgAABAhMJ7Mtzao+PSZfel/KxlNtz72u7uisVm6A9oXvtJWivlVp3vWMZnsB93XNsdAQIECBAgAABAgQIVAoI3CuhVCNAgAABAhMJJPDO8TGHyucl9E7dS2X922q78h8JSmuf1dybF+EeSzl1eKZb1ieQtSBwX9+8GhEBAgQIECBAgAABAh0EBO4d0NxCgAABAgRGEnh3DbJrdpkn9O56fMzn13v3LcchaG8JtpHqAveNTLRhEiBAgAABAgQIECDwWEDg/thIDQIECBAgMLZAgu/sav+s8kFdjo/pej57uvRTKTmu5lTZP9W2JXAsw7XDfVtzbrQECBAgQIAAAQIECLwiIHC3NAgQIECAwPMEpjg+ZncNQ78oH2t2zt9qOKP9eWtjSU8WuC9ptvSVAAECBAgQIECAAIFRBQTuo/JqnAABAgQIvCow9vExeQnqoZR9hzn4VO7JjvZzh3vdsj2BYxmyHe7bm3cjJkCAAAECBAgQIEDgBQGBu2VBgAABAgSmFUgAPtbxMbvSdhO05/O213flhoSnl7Y3qr9pgawZgfuml4DBEyBAgAABAgQIECDQCAjcrQUCBAgQIDCNQJfjY/JS1B8rupeXoB5KybExba9fyw3ZzZ7yS9ub1SdQBI6lCNwtBQIECBAgQIAAAQIECBQBgbtlQIAAAQIExhdoc3xMAvAE7acH3dqV7/fZze5FqOPP+1aeIHDfykwbJwECBAgQIECAAAECDwUE7g+JVCBAgAABAp0FPit3fltKPtZc35RKCS/f2mneZzd7+pBjY06lnGs6pA6BCoGsWTvcK6BUIUCAAAECBAgQIEBg/QIC9/XPsRESIECAwPQCOT4mAWR2qtdcP1zrvnZ8zK58P7vkD6Wk7bbXz+WG07Vc2t6sPoEHAsfrer+v9r58Id9zESBAgAABAgQIECBAYDMCAvfNTLWBEiBAgMBEAjnmJeeh1wTjbx0fk/uzmz2hfe0O+fshJsg/XctEw/eYDQocy5jtcN/gxBsyAQIECBAgQIAAAQL/KiBwtyoIECBAgMAwAgnFP5Syr2zuteNjcn9C+7wAtSa0v39cQvxTKQn9L5V9UY1AH4FDuTlHJ91fn67ruE/b7iVAgAABAgQIECBAgMCiBATui5ounSVAgACBGQoMcXzMroyrzwtQw2I3+wwXx0a6tC/j/NsLY82azPdcBAgQIECAAAECBAgQ2IyAwH0zU22gBAgQIDCCQJ/jY4Y4MsZu9hEmVZOtBV4L3C+lpX9r3ZobCBAgQIAAAQIECBAgsGABgfuCJ0/XCRAgQOBpAm2Pj/mu9DRnsf9SSs5lz3Exhx69z1Ed35dy6tGGWwkMKfBfrzTm/9YcUllbBAgQIECAAAECBAjMXsD/EzT7KdJBAgQIEJiRQNvjY34qfU/QfinlXSkJ2ncdx/Nzue90LWnPRWBOAq8F7v+3dDK/aHIRIECAAAECBAgQIEBgEwIC901Ms0ESIECAwAACbY+PyUtL/7OUBO7ZEd/1yu74Uynnrg24j8AEAlmff3zhOX+ydifQ9wgCBAgQIECAAAECBGYjIHCfzVToCAECBAjMVGBX+vVtKfvK/mU3748t6r/UbHbGJ7DPsTF2B1fCq/ZUgXN5+kuB+1/K109P7ZmHEyBAgAABAgQIECBAYEIBgfuE2B5FgAABAosSyPExOQbmOFGvc2RMAvYE7ZeJnukxBIYSyM/J1y809n7Cn6GhxqIdAgQIECBAgAABAgQIdBYQuHemcyMBAgQIrFggZ61/KGU38hh/Le03Lz89j/wszRMYU+BYGn8pcM+RSIcxH6xtAgQIECBAgAABAgQIzElA4D6n2dAXAgQIEHi2wK50oM3xMV37+0O58VSKI2O6CrpvbgL70qG/vdCprPV8z0WAAAECBAgQIECAAIFNCAjcNzHNBkmAAAECFQLZnZsXnOYomTGuHBlzupbLGA/QJoEnCuzLs18K3PM+g39/Yr88mgABAgQIECBAgAABApMKCNwn5fYwAgQIEJihQILC7GrfjdA3R8aMgKrJ2Qr81ys9839vznbKdIwAAQIECBAgQIAAgaEF/D9AQ4tqjwABAgSWIpCd7Dmn/TBChx0ZMwKqJmcvIHCf/RTpIAECBAgQIECAAAECYwsI3McW1j4BAgQIzFHgXenUsZQhj49xZMwcZ1qfphS4lIf9/oUH/ql87TxlRzyLAAECBAgQIECAAAECzxIQuD9L3nMJECBA4BkCn5WHZlf7fsCHf1faystPU1wEtixwLoP/4wsAAvctrwpjJ0CAAAECBAgQILAxAYH7xibccAkQILBRgexkb3a1D0GQ3ewfSzmV8ssQDWqDwAoEBO4rmERDIECAAAECBAgQIECgn4DAvZ+fuwkQIEBg/gL70sWhXoqa3ewJ2RMsuggQ+GeB/FzY4W5VECBAgAABAgQIECCwaQGB+6an3+AJECCwaoHsak/Q/kXPUdrN3hPQ7ZsRyF995C9J7q//KF/I91wECBAgQIAAAQIECBBYvYDAffVTbIAECBDYpMAQL0W1m32TS8egewgcy71fv3D/+/K1fM9FgAABAgQIECBAgACB1QsI3Fc/xQZIgACBTQn0fSnqr0WrOZv9sik5gyXQXyChusC9v6MWCBAgQIAAAQIECBBYsIDAfcGTp+sECBAg8N8COTrm81K+KiWBe5frp3JTE7R3ud89BAj8Yxe7wN1KIECAAAECBAgQIEBg0wIC901Pv8ETIEBg0QIJ2XM++6HHKHJsTIL2H3u04VYCbQV25YbfX2/KL4nyS6Nct5+/9N9tn/Oo/rlUSPk00M/AsbQjcH+k7vsECBAgQIAAAQIECKxaQOC+6uk1OAIECKxOYFdG9GUph1LyeZfLS1C7qLmnjcAfr5X3r3xs09ZUdU/lQTlr/dLjgcdyr8C9B6BbCRAgQIAAAQIECBBYvoDAfflzaAQECBDYgkBC9uxmT+ly5Wz270uxm72LnnteEkionp3p2ZW+u5b7HepLlDuWTn9Tyi8dOp97Be4d4NxCgAABAgQIECBAgMB6BATu65lLIyFAgMDaBBJivivlUEpz5EbbMf5QbjiVkrC9S4DY9nnqr0sg6+4PpTRB+r58nnWZsubrUgb3l1LOLQd5LPUF7i3RVCdAgAABAgQIECBAYF0CAvd1zafRECBAYA0COZv9UErX3ewxyJnUeYnqZQ0gxjCJQHas70pJuN6Urr/omaTDEzwk7zY4XX+ean6WjqWuwH2CifEIAgQIECBAgAABAgTmKyBwn+/c6BkBAgS2JJBgM8fGJCTf9Rh4zmc/lHLu0YZb1y2Q9ZUXlu5LaY6DyUfX2wIJ3/OXIvnZyhFN+e/bvwCIYUxf+vnN2fBHwAQIECBAgAABAgQIENiCgMB9C7NsjAQIEJivQAK7HBuToL3vbuKcO51Qz9Ex853vqXuW8Lc5EmZfPp/LGetNYB2Py7Xcf57/Tqg91nrOz9vh+jPz25EnRuA+MrDmCRAgQIAAAQIECBCYj4DAfT5zoScECBDYmkCOnhgiaP/pGhwmnHRtVyBhehOuP/tImKzJBOVNYN58vJSvpczpSvD+sZT8hclY159Kw+exGtcuAQIECBAgQIAAAQIE5iQgcJ/TbOgLAQIEtiGQYO9Yyq7ncLNLOO0kLHRtS+A+XN8/Yfg5vuhSSsL024/5fIlXDE+l5LidIa/88sGRPUOKaosAAQIECBAgQIAAgVkLCNxnPT06R4AAgVUJ7Mpovi0lwV7f64fSwKGUS9+G3D97gbzMtNmxnjU0xPppM+gExllnCdabnernNg0srG5+ro6lDBG8+zld2OTrLgECBAgQIECAAAEC/QUE7v0NtUCAAAECjwW+KFUStvc9pz272hMI5uWNrnUJ7K4h7758TMCe/55yZ3SzY/1cnnu7a31dyvWjaV6Cmp+3HNXT5vp0/Rk9tblJXQIECBAgQIAAAQIECKxBQOC+hlk0BgIECMxbIGe1HwfoopeiDoA4gybyS5fmrPVd+bwJdqfsWnatNzvWb3euT9mHJT0r85RfmjXzlY/NDvjsYm/Oqz9fXcd60euSzPSVAAECBAgQIECAAIGNCgjcNzrxhk2AAIGJBPJS1A89n5Wdx4dSEua5liOwK11NKHu7Wz2f9/0rh7YCCYTvw/W2bahPgAABAgQIECBAgAABAgSqBATuVUwqESBAgEAHgX25528d7ru95X35j2PPNtw+nkAC9N+WkrnOdf9xvCe/3LJwfWpxzyNAgAABAgQIECBAgACBfxIQuFsQBAgQIDCWwP8rDXfdzexli2PNSl27eVFprsxfc4767e70fV0zo9XKWf7ZtX6+fmzOXB/tgRomQIAAAQIECBAgQIAAAQI1AgL3GiV1CBAgQKCtQALZLrvbE6QeS/nY9oHqPxRodqOnYhOe3wbqu/L1lLld9y8zFa7PbYb0hwABAgQIECBAgAABAgT+R0DgbjEQIECAwBgCx9JoXpba9kqY2ryAsXnx4qV8LSVXE762bXct9ZsXjjbjuT8TfX8z0F35PGVJV/6yIXN9e+a6F3AuaQb1lQABAgQIECBAgAABAhsXELhvfAEYPgECBEYSyA71dyO1fdtswtmU5rr/73z9pa/l60OE97e7xmuGu3+lUtuv1zxrznV+us5LE6xnjvK5iwABAgQIECBAgAABAgQILFpA4L7o6dN5AgQIzE4gO7C/LeWL2fVMh54h0OxYbwJ1wfozZsEzCRAgQIAAAQIECBAgQGAyAYH7ZNQeRIAAgdULZEf7sZSuL0pdPdAKB9j8lUCC9NvSHA20wiEbEgECBAgQIECAAAECBAgQeF1A4G51ECBAgEBfgV1pILva930bcv9sBHLkS3N2+vnaq0v5mJJLoD6bqdIRAgQIECBAgAABAgQIEJiTgMB9TrOhLwQIEFieQJtd7Z/K8E6l5Nzz3bW0PQN9eULz6fFtiH4p3UrJdb5+bF5WO58e6wkBAgQIECBAgAABAgQIEFiYgMB9YROmuwQIEJiJwK7046+lJDB/dOXYka9K+f6NijmG5rat/U3dfL05pmbrAf2vxeL25aKX8t8pzXW++VyA/mhl+j4BAgQIECBAgAABAgQIEBhYQOA+MKjmCBAgsAGBQxnjh1Jqzmp/X+p9LKU5nmRontswPm3f/3e+truW+2fn67/v2aHbXeM1TZ1fqdT26zXPUocAAQIECBAgQIAAAQIECBCYWEDgPjG4xxEgQGDBAgnYc1b7FxVj+KHUya72293YFbepQoAAAQIECBAgQIAAAQIECBBYroDAfblzp+cECBCYUiA7xxO2PzpCJkeeHEvJrnYXAQIECBAgQIAAAQIECBAgQGBTAgL3TU23wRIgQKCTQHa0J2x/dIRMdrUfSrl0eoqbCBAgQIAAAQIECBAgQIAAAQILFxC4L3wCdZ8AAQIjCyRAT9j+1mVX+8iToHkCBAgQIECAAAECBAgQIEBgGQIC92XMk14SIEDgGQI1YXteGpp6zmp/xgx5JgECBAgQIECAAAECBAgQIDArAYH7rKZDZwgQIDAbgZzV/rdS3jpG5pvy/bwY1UWAAAECBAgQIECAAAECBAgQIFAEBO6WAQECBAjcCyRk/3spu1docoRMgvYTOgIECBAgQIAAAQIECBAgQIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg==';
+
diff --git a/vue-options-api-demos/inputs/signature/popup/scale/main.js b/vue-options-api-demos/inputs/signature/popup/scale/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/popup/scale/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/popup/scale/main.vue b/vue-options-api-demos/inputs/signature/popup/scale/main.vue
new file mode 100644
index 00000000..bc8c6010
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/popup/scale/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/popup/scale/sample-signature.js b/vue-options-api-demos/inputs/signature/popup/scale/sample-signature.js
new file mode 100644
index 00000000..82d3e903
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/popup/scale/sample-signature.js
@@ -0,0 +1,2 @@
+export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEg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QIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg==';
+
diff --git a/vue-options-api-demos/inputs/signature/readonly/main.js b/vue-options-api-demos/inputs/signature/readonly/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/readonly/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/readonly/main.vue b/vue-options-api-demos/inputs/signature/readonly/main.vue
new file mode 100644
index 00000000..1d1fa068
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/readonly/main.vue
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/signature/readonly/sample-signature.js b/vue-options-api-demos/inputs/signature/readonly/sample-signature.js
new file mode 100644
index 00000000..82d3e903
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/readonly/sample-signature.js
@@ -0,0 +1,2 @@
+export const sampleSignature = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH4CAYAAABQRy9XAAAgAElEQVR4XuzdjZUjt4EuUL8I7BeBuRFYG4HpCCRHIDqC0UYgTgQzikBUBNZEYCoCSxEsFcGTItiHb83apenuJuqX9XPrHJxudaNQwAV6vPs1GvV/fuMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEegv8n94taIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4jcDdIiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAYH7AIiaIECAAAECBAgQIECAAAECBAgQIECAAAECAndrgAABAgQIECBAgAABAgQIECBAgAABAgQIDCAgcB8AURMECBAgQIAAAQIECBAgQIAAAQIECBAgQEDgbg0QIECAAAECBAgQIECAAAECBAgQIECAAIEBBATuAyBqggABAgQIECBAgAABAgQIECBAgAABAgQICNytAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMICAwH0ARE0QIECAAAECBAgQIECAAAECBAgQIECAAAGBuzVAgAABAgQIECBAgAABAgQIECBAgAABAgQGEBC4D4CoCQIECBAgQIAAAQIECBAgQIAAAQIECBAgIHC3BggQIECAAAECBAgQIECAAAECBAgQIECAwAACAvcBEDVBgAABAgQIECBAgAABAgQIECBAgAABAgQE7tYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQEDgPgCiJggQIECAAAECBAgQIECAAAECBAgQIECAgMDdGiBAgAABAgQIECBAgAABAgQIECBAgAABAgMICNwHQNQEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQuFsDBAgQIECAAAECBAgQIECAAAECBAgQIEBgAAGB+wCImiBAgAABAgQIECBAgAABAgQIECBAgAABAgJ3a4AAAQIECBAgQIAAAQIECBAgQIAAAQIECAwgIHAfAFETBAgQIECAAAECBAgQIECAAAECBAgQIEBA4G4NECBAgAABAgQIECBAgAABAgQIECBAgACBAQQE7gMgaoIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjcrQECBAgQIECAAAECBAgQIECAAAECBAgQIDCAgMB9AERNECBAgAABAgQIECBAgAABAgQIECBAgAABgbs1QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBhAQuA+AqAkCBAgQIECAAAECBAgQIECAAAECBAgQICBwtwYIECBAgAABAgQIECBAgAABAgQIECBAgMAAAgL3ARA1QYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBO7WAAECBAgQIECAAAECBAgQIECAAAECBAgQGEBA4D4AoiYIECBAgAABAgQIECBAgAABAgQIECBAgIDA3RogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCAjcB0DUBAECBAgQIECAAAECBAgQIECAAAECBAgQELhbAwQIECBAgAABAgQIECBAgAABAgQIECBAYAABgfsAiJogQIAAAQIECBAgQIAAAQIECBAgQIAAAQICd2uAAAECBAgQIECAAAECBAgQIECAAAECBAgMICBwHwBREwQIECBAgAABAgQIECBAgAABAgQIECBAQOBuDRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQEEBO4DIGqCAAECBAgQIECAAAECBAgQIECAAAECBAgI3K0BAgQIECBAgAABAgQIECBAgAABAgQIECAwgIDAfQBETRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYG7NUCAAAECBAgQIECAAAECBAgQIECAAAECBAYQELgPgKgJAgQIECBAgAABAgQIECBAgAABAgQIECAgcLcGCBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAIC9wEQNUGAAAECBAgQIECAAAECBAgQIECAAAECBATu1gABAgQIECBAgAABAgQIECBAgAABAgQIEBhAQOA+AKImCBAgQIAAAQIECBAgQIAAAQIECBAgQICAwN0aIECAAAECBAgQIECAAAECBAgQIECAAAECAwgI3AdA1AQBAgQIECBAgAABAgQIECBAgAABAgQIEBC4WwMECBAgQIAAAQIECBAgQIBAF4HflZt+6XKjewgQIECAwFoFBO5rnVnjIkCAAAECBAgQIECAAAEC4wh8WZo9lrIr5VLKn0v5cZxHaZUAAQIECCxLQOC+rPnSWwIECBAgQIAAAQIECBAg8CyBBOzflrK/60B2uf9bKXa7P2tmPJcAAQIEZiMgcJ/NVOgIAQIECBAgQIAAAQIECBCYpUCOjnlXyvGN3v2lfO80y97rFAECBAgQmFBA4D4htkcRIECAAAECBAgQIECAAIGFCXxR+vuhlN2Dfr8v3z8ubGy6S4AAAQIEBhcQuA9OqkECBAgQIECAAAECBAgQILB4gQTsCdoTuD+6fi0VPivl8qii7xMgQIAAgbULCNzXPsPGR4AAAQIECBAgQIAAAQIE6gVqjo+5be2n8h+HUrw0td5YTQIECBBYsYDAfcWTa2gECBAgQIAAAQIECBAgQKCFwJel7rGUXcU92dWeuh8r6qpCgAABAgQ2IyBw38xUGygBAgQIECBAgAABAgQIEHhRYF+++m1l0J4GPpXyVSkXngQIECBAgMA/CwjcrQgCBAgQIECAAAECBAgQILBNgQTtX5eSjzXXz6XSoZRzTWV1CBAgQIDAFgUE7lucdWMmQIAAAQIECBAgQIAAgS0L7MrgE7QnPK+93peKx9rK6hEg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QIAAgf8VELhbDQQIECBwL5Cd7fs3wvZ8zxEy1g0BAgQIECBAgAABAgQIECBA4E5A4G5JECBAgMCtwLH8x9fCdouCAAECBAgQIECAAAECBAgQINBeQODe3swdBAgQWKvAvgwsu9tfu/5cvvH9WgdvXAQIECBAgAABAgQIECBAgACBvgIC976C7idAgMA6BHJu+3+W8tpLUt+X7x3XMVSjIECAAAECBAgQIECAAAECBAiMIyBwH8dVqwQIEFiawF9Lh794pdM/lK/vlzYg/SVAgAABAgQIECBAgAABAgQITC0gcJ9a3PMIECAwP4GvSpc+vNKtX8vXd6X8Mr9u6xEBAgQIECBAgAABAgQIECBAYF4CAvd5zYfeECBAYGqBz8oD//7GQ/9UvneeulOeR4AAAQIECBAgQIAAAQIECBBYooDAfYmzps8ECBAYTiAvQf38leac2z6cs5YIECBAgAABAgQIECBAgACBDQgI3DcwyYZIgACBNwReC9x/Kvdk97uLAAECBAgQIECAAAECBAgQIECgUkDgXgmlGgECBFYqkBel5oWpt5dz21c62YZFgAABAgQIECBAgAABAgQIjCsgcB/XV+sECBBYgkBC94+l/L6Un0vJf/+4hI7rIwECBAgQIECAAAECBAgQIEBgTgIC9znNhr4QIEDguQK78vjLc7vg6QQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgSFIJPXAAAHJ0lEQVQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgAABAgQIECBAgAABAgQIECBAgAABAjMSELjPaDJ0hQABAgQIECBAgAABAgQIECBAgAABAgSWKyBwX+7c6TkBAgQIECBAgAABAgQIECBAgAABAgQIzEhA4D6jydAVAgQIECBAgAABAgQIECBAgAABAgQIEFiugMB9uXOn5wQIECBAgAABAgQIECBAgAABAgQIECAwIwGB+4wmQ1cIECBAgAABAgQIECBAgAABAgQIECBAYLkCAvflzp2eEyBAgAABAgQIECBAgAABAgQIECBAgMCMBATuM5oMXSFAgAABAgQIECBAgAABAgQIECBAgACB5QoI3Jc7d3pOgMD/b8eOaQAAABCG+XeNjZHUASnfCBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfAcH99zvLCRAgQIAAAQIECBAgQIAAAQIECBAgQCAkILiHzjCFAAECBAgQIECAAAECBAgQIECAAAECBH4FBPff7ywnQIAAAQIECBAgQIAAAQIECBAgQIAAgZCA4B46wxQCBAgQIECAAAECBAgQIECAAAECBAgQ+BUQ3H+/s5wAAQIECBAgQIAAAQIECBAgQIAAAQIEQgKCe+gMUwgQIECAAAECBAgQIECAAAECBAgQIEDgV0Bw//3OcgIECBAgQIAAAQIECBAgQIAAAQIECBAICQjuoTNMIUCAAAECBAgQIECAAAECBAgQIECAAIFfgQGMc9WA31rv6AAAAABJRU5ErkJggg==';
+
diff --git a/vue-options-api-demos/inputs/signature/smooth/main.js b/vue-options-api-demos/inputs/signature/smooth/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/smooth/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/signature/smooth/main.vue b/vue-options-api-demos/inputs/signature/smooth/main.vue
new file mode 100644
index 00000000..4604112a
--- /dev/null
+++ b/vue-options-api-demos/inputs/signature/smooth/main.vue
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/slider/buttons/main.js b/vue-options-api-demos/inputs/slider/buttons/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/slider/buttons/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/slider/buttons/main.vue b/vue-options-api-demos/inputs/slider/buttons/main.vue
new file mode 100644
index 00000000..dc04c9d1
--- /dev/null
+++ b/vue-options-api-demos/inputs/slider/buttons/main.vue
@@ -0,0 +1,28 @@
+
+
+
+ 1
+ 3
+ 5
+ 7
+ 10
+
+
+
+
diff --git a/vue-options-api-demos/inputs/slider/controlled/main.js b/vue-options-api-demos/inputs/slider/controlled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/slider/controlled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/slider/controlled/main.vue b/vue-options-api-demos/inputs/slider/controlled/main.vue
new file mode 100644
index 00000000..43292676
--- /dev/null
+++ b/vue-options-api-demos/inputs/slider/controlled/main.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/slider/labels/main.js b/vue-options-api-demos/inputs/slider/labels/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/slider/labels/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/slider/labels/main.vue b/vue-options-api-demos/inputs/slider/labels/main.vue
new file mode 100644
index 00000000..d28eb004
--- /dev/null
+++ b/vue-options-api-demos/inputs/slider/labels/main.vue
@@ -0,0 +1,28 @@
+
+
+
+ 1
+ 3
+ 5
+ 7
+ 10
+
+
+
+
diff --git a/vue-options-api-demos/inputs/slider/orientation/main.js b/vue-options-api-demos/inputs/slider/orientation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/slider/orientation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/slider/orientation/main.vue b/vue-options-api-demos/inputs/slider/orientation/main.vue
new file mode 100644
index 00000000..c4bbf169
--- /dev/null
+++ b/vue-options-api-demos/inputs/slider/orientation/main.vue
@@ -0,0 +1,29 @@
+
+
+
+ 1
+ 3
+ 5
+ 7
+ 10
+
+
+
+
diff --git a/vue-options-api-demos/inputs/slider/overview/main.js b/vue-options-api-demos/inputs/slider/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/slider/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/slider/overview/main.vue b/vue-options-api-demos/inputs/slider/overview/main.vue
new file mode 100644
index 00000000..dc04c9d1
--- /dev/null
+++ b/vue-options-api-demos/inputs/slider/overview/main.vue
@@ -0,0 +1,28 @@
+
+
+
+ 1
+ 3
+ 5
+ 7
+ 10
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/appearance/configurator/SwitchStyleConfigurator.vue b/vue-options-api-demos/inputs/switch/appearance/configurator/SwitchStyleConfigurator.vue
new file mode 100644
index 00000000..c5b405da
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/appearance/configurator/SwitchStyleConfigurator.vue
@@ -0,0 +1,101 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Track Rounded Mode
+
+
+
+
+
+
+
+ Thumb Rounded Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/appearance/configurator/main.js b/vue-options-api-demos/inputs/switch/appearance/configurator/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/appearance/configurator/main.vue b/vue-options-api-demos/inputs/switch/appearance/configurator/main.vue
new file mode 100644
index 00000000..9fb854c9
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/appearance/configurator/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/appearance/size/main.js b/vue-options-api-demos/inputs/switch/appearance/size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/appearance/size/main.vue b/vue-options-api-demos/inputs/switch/appearance/size/main.vue
new file mode 100644
index 00000000..ac8d4b9c
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/appearance/size/main.vue
@@ -0,0 +1,44 @@
+
+
+
+ Small size:
+
+
+
+ Medium size:
+
+
+
+ Large size:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.js b/vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.vue b/vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.vue
new file mode 100644
index 00000000..f9915a31
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/appearance/thumb-rounded/main.vue
@@ -0,0 +1,43 @@
+
+
+
+ Small roundness:
+
+
+
+ Medium roundness:
+
+
+
+ Large roundness:
+
+
+
+ Full roundness:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/appearance/track-rounded/main.js b/vue-options-api-demos/inputs/switch/appearance/track-rounded/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/appearance/track-rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/appearance/track-rounded/main.vue b/vue-options-api-demos/inputs/switch/appearance/track-rounded/main.vue
new file mode 100644
index 00000000..58787569
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/appearance/track-rounded/main.vue
@@ -0,0 +1,43 @@
+
+
+
+ Small roundness:
+
+
+
+ Medium roundness:
+
+
+
+ Large roundness:
+
+
+
+ Full roundness:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/controlled/manual/main.js b/vue-options-api-demos/inputs/switch/controlled/manual/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/controlled/manual/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/controlled/manual/main.vue b/vue-options-api-demos/inputs/switch/controlled/manual/main.vue
new file mode 100644
index 00000000..2e61b799
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/controlled/manual/main.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/controlled/overview/main.js b/vue-options-api-demos/inputs/switch/controlled/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/controlled/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/controlled/overview/main.vue b/vue-options-api-demos/inputs/switch/controlled/overview/main.vue
new file mode 100644
index 00000000..19b930bc
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/controlled/overview/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/controlled/readonly/main.js b/vue-options-api-demos/inputs/switch/controlled/readonly/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/controlled/readonly/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/controlled/readonly/main.vue b/vue-options-api-demos/inputs/switch/controlled/readonly/main.vue
new file mode 100644
index 00000000..4d16e0ca
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/controlled/readonly/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/default/main.js b/vue-options-api-demos/inputs/switch/default/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/default/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/default/main.vue b/vue-options-api-demos/inputs/switch/default/main.vue
new file mode 100644
index 00000000..928f2791
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/default/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/disabled/main.js b/vue-options-api-demos/inputs/switch/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/disabled/main.vue b/vue-options-api-demos/inputs/switch/disabled/main.vue
new file mode 100644
index 00000000..f6354653
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/disabled/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/events/Logger.vue b/vue-options-api-demos/inputs/switch/events/Logger.vue
new file mode 100644
index 00000000..aa04a80b
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/switch/events/main.js b/vue-options-api-demos/inputs/switch/events/main.js
new file mode 100644
index 00000000..1f1c6c86
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/events/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
+
diff --git a/vue-options-api-demos/inputs/switch/events/main.vue b/vue-options-api-demos/inputs/switch/events/main.vue
new file mode 100644
index 00000000..5fe3e347
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/events/main.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormContent.vue b/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormContent.vue
new file mode 100644
index 00000000..edf52a4f
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormContent.vue
@@ -0,0 +1,176 @@
+
+
+
+ Create new account:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Keep me signed in
+
+
+
+
+ Submit
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormInput.vue b/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormInput.vue
new file mode 100644
index 00000000..2171ad3a
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormInput.vue
@@ -0,0 +1,98 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormSwitch.vue b/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormSwitch.vue
new file mode 100644
index 00000000..f341b3d2
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/custom-message/FormSwitch.vue
@@ -0,0 +1,102 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+ {{ hint }}
+
+ {{ validationMessage }}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/forms-support/custom-message/main.js b/vue-options-api-demos/inputs/switch/forms-support/custom-message/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/custom-message/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/forms-support/custom-message/main.vue b/vue-options-api-demos/inputs/switch/forms-support/custom-message/main.vue
new file mode 100644
index 00000000..7361dbf5
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/custom-message/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/forms-support/form-required/FormContent.vue b/vue-options-api-demos/inputs/switch/forms-support/form-required/FormContent.vue
new file mode 100644
index 00000000..6f3e5603
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/form-required/FormContent.vue
@@ -0,0 +1,96 @@
+
+
+
+ Create new account:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/forms-support/form-required/FormInput.vue b/vue-options-api-demos/inputs/switch/forms-support/form-required/FormInput.vue
new file mode 100644
index 00000000..b69c4a21
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/form-required/FormInput.vue
@@ -0,0 +1,85 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/forms-support/form-required/FormSwitch.vue b/vue-options-api-demos/inputs/switch/forms-support/form-required/FormSwitch.vue
new file mode 100644
index 00000000..76da195a
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/form-required/FormSwitch.vue
@@ -0,0 +1,100 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/forms-support/form-required/main.js b/vue-options-api-demos/inputs/switch/forms-support/form-required/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/form-required/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/forms-support/form-required/main.vue b/vue-options-api-demos/inputs/switch/forms-support/form-required/main.vue
new file mode 100644
index 00000000..c82b3f5c
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/form-required/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/forms-support/overview/FormContent.vue b/vue-options-api-demos/inputs/switch/forms-support/overview/FormContent.vue
new file mode 100644
index 00000000..0b0b19c8
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/overview/FormContent.vue
@@ -0,0 +1,110 @@
+
+
+
+ Please fill in the fields:
+
+ First name:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+ Clear
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/forms-support/overview/FormInput.vue b/vue-options-api-demos/inputs/switch/forms-support/overview/FormInput.vue
new file mode 100644
index 00000000..b69c4a21
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/overview/FormInput.vue
@@ -0,0 +1,85 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/forms-support/overview/FormSwitch.vue b/vue-options-api-demos/inputs/switch/forms-support/overview/FormSwitch.vue
new file mode 100644
index 00000000..76da195a
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/overview/FormSwitch.vue
@@ -0,0 +1,100 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/forms-support/overview/main.js b/vue-options-api-demos/inputs/switch/forms-support/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/forms-support/overview/main.vue b/vue-options-api-demos/inputs/switch/forms-support/overview/main.vue
new file mode 100644
index 00000000..7361dbf5
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/forms-support/overview/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/keyboard/main.js b/vue-options-api-demos/inputs/switch/keyboard/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/keyboard/main.vue b/vue-options-api-demos/inputs/switch/keyboard/main.vue
new file mode 100644
index 00000000..c47beba6
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/keyboard/main.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/labels/main.js b/vue-options-api-demos/inputs/switch/labels/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/labels/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/labels/main.vue b/vue-options-api-demos/inputs/switch/labels/main.vue
new file mode 100644
index 00000000..eb85e646
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/labels/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/switch/overview/main.js b/vue-options-api-demos/inputs/switch/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/switch/overview/main.vue b/vue-options-api-demos/inputs/switch/overview/main.vue
new file mode 100644
index 00000000..c743a127
--- /dev/null
+++ b/vue-options-api-demos/inputs/switch/overview/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/adornments/clear-button/main.js b/vue-options-api-demos/inputs/textarea/adornments/clear-button/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/clear-button/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/adornments/clear-button/main.vue b/vue-options-api-demos/inputs/textarea/adornments/clear-button/main.vue
new file mode 100644
index 00000000..79544c2f
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/clear-button/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/adornments/disabled/InputIcons.vue b/vue-options-api-demos/inputs/textarea/adornments/disabled/InputIcons.vue
new file mode 100644
index 00000000..f4854194
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/disabled/InputIcons.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textarea/adornments/disabled/main.js b/vue-options-api-demos/inputs/textarea/adornments/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/adornments/disabled/main.vue b/vue-options-api-demos/inputs/textarea/adornments/disabled/main.vue
new file mode 100644
index 00000000..38c95b93
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/disabled/main.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textarea/adornments/icon-name/main.js b/vue-options-api-demos/inputs/textarea/adornments/icon-name/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/icon-name/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/adornments/icon-name/main.vue b/vue-options-api-demos/inputs/textarea/adornments/icon-name/main.vue
new file mode 100644
index 00000000..3866e249
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/icon-name/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.js b/vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.vue b/vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.vue
new file mode 100644
index 00000000..cba7bc3c
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/loading-icon/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/adornments/prefix/InputIcons.vue b/vue-options-api-demos/inputs/textarea/adornments/prefix/InputIcons.vue
new file mode 100644
index 00000000..da2d068c
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/prefix/InputIcons.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textarea/adornments/prefix/main.js b/vue-options-api-demos/inputs/textarea/adornments/prefix/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/prefix/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/adornments/prefix/main.vue b/vue-options-api-demos/inputs/textarea/adornments/prefix/main.vue
new file mode 100644
index 00000000..c8241a81
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/prefix/main.vue
@@ -0,0 +1,45 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/adornments/separator/main.js b/vue-options-api-demos/inputs/textarea/adornments/separator/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/separator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/adornments/separator/main.vue b/vue-options-api-demos/inputs/textarea/adornments/separator/main.vue
new file mode 100644
index 00000000..49c0db0f
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/separator/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/adornments/suffix/InputIcons.vue b/vue-options-api-demos/inputs/textarea/adornments/suffix/InputIcons.vue
new file mode 100644
index 00000000..da2d068c
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/suffix/InputIcons.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textarea/adornments/suffix/main.js b/vue-options-api-demos/inputs/textarea/adornments/suffix/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/suffix/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/adornments/suffix/main.vue b/vue-options-api-demos/inputs/textarea/adornments/suffix/main.vue
new file mode 100644
index 00000000..8cee2e6c
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/suffix/main.vue
@@ -0,0 +1,46 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.js b/vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.vue b/vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.vue
new file mode 100644
index 00000000..33f28c36
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/adornments/validation-icon/main.vue
@@ -0,0 +1,22 @@
+
+
+ Valid Input Icon:
+
+
+
+
+ Invalid Input Icon:
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/appearance/configurator/TextAreaStyleConfigurator.vue b/vue-options-api-demos/inputs/textarea/appearance/configurator/TextAreaStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/appearance/configurator/TextAreaStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/appearance/configurator/main.js b/vue-options-api-demos/inputs/textarea/appearance/configurator/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/appearance/configurator/main.vue b/vue-options-api-demos/inputs/textarea/appearance/configurator/main.vue
new file mode 100644
index 00000000..3dc29349
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/appearance/configurator/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/appearance/fill-mode/main.js b/vue-options-api-demos/inputs/textarea/appearance/fill-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/appearance/fill-mode/main.vue b/vue-options-api-demos/inputs/textarea/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..40346ac6
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/appearance/fill-mode/main.vue
@@ -0,0 +1,54 @@
+
+
+
+
+ Flat:
+
+
+
+ Solid:
+
+
+
+ Outline:
+
+
+
+
+
+ Custom fill mode:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/appearance/rounded/main.js b/vue-options-api-demos/inputs/textarea/appearance/rounded/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/appearance/rounded/main.vue b/vue-options-api-demos/inputs/textarea/appearance/rounded/main.vue
new file mode 100644
index 00000000..35e432fc
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/appearance/rounded/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+ Small roundness:
+
+
+
+ Medium roundness:
+
+
+
+ Large roundness:
+
+
+
+
+
+ Full roundness:
+
+
+
+ Custom roundness:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/appearance/size/main.js b/vue-options-api-demos/inputs/textarea/appearance/size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/appearance/size/main.vue b/vue-options-api-demos/inputs/textarea/appearance/size/main.vue
new file mode 100644
index 00000000..c777ce98
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/appearance/size/main.vue
@@ -0,0 +1,53 @@
+
+
+
+
+ Small size:
+
+
+
+ Medium size:
+
+
+
+ Large size:
+
+
+
+
+
+ Custom size:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/controlled/main.js b/vue-options-api-demos/inputs/textarea/controlled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/controlled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/controlled/main.vue b/vue-options-api-demos/inputs/textarea/controlled/main.vue
new file mode 100644
index 00000000..5ff104ef
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/controlled/main.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/counter/main.js b/vue-options-api-demos/inputs/textarea/counter/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/counter/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/counter/main.vue b/vue-options-api-demos/inputs/textarea/counter/main.vue
new file mode 100644
index 00000000..4a0f7f3f
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/counter/main.vue
@@ -0,0 +1,39 @@
+
+
+
+ {{ value.length }} / {{ max }}
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/default/main.js b/vue-options-api-demos/inputs/textarea/default/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/default/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/default/main.vue b/vue-options-api-demos/inputs/textarea/default/main.vue
new file mode 100644
index 00000000..6602e258
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/default/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/disabled/main.js b/vue-options-api-demos/inputs/textarea/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/disabled/main.vue b/vue-options-api-demos/inputs/textarea/disabled/main.vue
new file mode 100644
index 00000000..bd2534a8
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/disabled/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/events/Logger.vue b/vue-options-api-demos/inputs/textarea/events/Logger.vue
new file mode 100644
index 00000000..aa04a80b
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textarea/events/main.js b/vue-options-api-demos/inputs/textarea/events/main.js
new file mode 100644
index 00000000..1f1c6c86
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/events/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
+
diff --git a/vue-options-api-demos/inputs/textarea/events/main.vue b/vue-options-api-demos/inputs/textarea/events/main.vue
new file mode 100644
index 00000000..fe259dd8
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/events/main.vue
@@ -0,0 +1,61 @@
+
+
+
Enter text:
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/forms/FormContent.vue b/vue-options-api-demos/inputs/textarea/forms/FormContent.vue
new file mode 100644
index 00000000..556d866b
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/forms/FormContent.vue
@@ -0,0 +1,117 @@
+
+
+ USER DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+ Clear
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/forms/FormInput.vue b/vue-options-api-demos/inputs/textarea/forms/FormInput.vue
new file mode 100644
index 00000000..d9caa57e
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/forms/FormInput.vue
@@ -0,0 +1,88 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/forms/FormTextArea.vue b/vue-options-api-demos/inputs/textarea/forms/FormTextArea.vue
new file mode 100644
index 00000000..014b7e68
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/forms/FormTextArea.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{ label }}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/forms/main.js b/vue-options-api-demos/inputs/textarea/forms/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/forms/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/forms/main.vue b/vue-options-api-demos/inputs/textarea/forms/main.vue
new file mode 100644
index 00000000..ee5d7f4f
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/forms/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/input-mode/main.js b/vue-options-api-demos/inputs/textarea/input-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/input-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/input-mode/main.vue b/vue-options-api-demos/inputs/textarea/input-mode/main.vue
new file mode 100644
index 00000000..e962663f
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/input-mode/main.vue
@@ -0,0 +1,77 @@
+
+
+
+
+ inputmode=text (default)
+
+
+
+
+
inputmode=email
+
+
+
+
+
+
+
+
inputmode=search
+
+
+
+
+
+
+
+
inputmode=url
+
+
+
+ https://
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/overview/FormContent.vue b/vue-options-api-demos/inputs/textarea/overview/FormContent.vue
new file mode 100644
index 00000000..b4aa8d6e
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/overview/FormContent.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+ Clear
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/overview/FormTextArea.vue b/vue-options-api-demos/inputs/textarea/overview/FormTextArea.vue
new file mode 100644
index 00000000..6c7e34bf
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/overview/FormTextArea.vue
@@ -0,0 +1,94 @@
+
+
+
+ {{ label }}
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/overview/main.js b/vue-options-api-demos/inputs/textarea/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/overview/main.vue b/vue-options-api-demos/inputs/textarea/overview/main.vue
new file mode 100644
index 00000000..ee5d7f4f
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/overview/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/sizing/auto-sizing/main.js b/vue-options-api-demos/inputs/textarea/sizing/auto-sizing/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/sizing/auto-sizing/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/sizing/auto-sizing/main.vue b/vue-options-api-demos/inputs/textarea/sizing/auto-sizing/main.vue
new file mode 100644
index 00000000..c2e74d26
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/sizing/auto-sizing/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textarea/sizing/initial/main.js b/vue-options-api-demos/inputs/textarea/sizing/initial/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/sizing/initial/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textarea/sizing/initial/main.vue b/vue-options-api-demos/inputs/textarea/sizing/initial/main.vue
new file mode 100644
index 00000000..7b7f9954
--- /dev/null
+++ b/vue-options-api-demos/inputs/textarea/sizing/initial/main.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/adornments/main.js b/vue-options-api-demos/inputs/textbox/adornments/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/adornments/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/adornments/main.vue b/vue-options-api-demos/inputs/textbox/adornments/main.vue
new file mode 100644
index 00000000..aa7ab570
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/adornments/main.vue
@@ -0,0 +1,56 @@
+
+
+
Message:
+
+
+
+
+
+
+ Send
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textbox/appearance/configurator/InputStyleConfigurator.vue b/vue-options-api-demos/inputs/textbox/appearance/configurator/InputStyleConfigurator.vue
new file mode 100644
index 00000000..c1b36044
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/appearance/configurator/InputStyleConfigurator.vue
@@ -0,0 +1,105 @@
+
+
+
+ Configurator
+
+
+
+
+ Size
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+ Border Radius
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/appearance/configurator/main.js b/vue-options-api-demos/inputs/textbox/appearance/configurator/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/appearance/configurator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/appearance/configurator/main.vue b/vue-options-api-demos/inputs/textbox/appearance/configurator/main.vue
new file mode 100644
index 00000000..c06b9bf2
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/appearance/configurator/main.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/appearance/fill-mode/main.js b/vue-options-api-demos/inputs/textbox/appearance/fill-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/appearance/fill-mode/main.vue b/vue-options-api-demos/inputs/textbox/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..99cf3f9b
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/appearance/fill-mode/main.vue
@@ -0,0 +1,54 @@
+
+
+
+
+ Flat:
+
+
+
+ Solid:
+
+
+
+ Outline:
+
+
+
+
+
+ Custom fill mode:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/appearance/rounded/main.js b/vue-options-api-demos/inputs/textbox/appearance/rounded/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/appearance/rounded/main.vue b/vue-options-api-demos/inputs/textbox/appearance/rounded/main.vue
new file mode 100644
index 00000000..8295f76a
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/appearance/rounded/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+ Small roundness:
+
+
+
+ Medium roundness:
+
+
+
+ Large roundness:
+
+
+
+
+
+ Full roundness:
+
+
+
+ Custom roundness:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/appearance/size/main.js b/vue-options-api-demos/inputs/textbox/appearance/size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/appearance/size/main.vue b/vue-options-api-demos/inputs/textbox/appearance/size/main.vue
new file mode 100644
index 00000000..c11ce5d6
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/appearance/size/main.vue
@@ -0,0 +1,53 @@
+
+
+
+
+ Small size:
+
+
+
+ Medium size:
+
+
+
+ Large size:
+
+
+
+
+
+ Custom size:
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/character-count/main.js b/vue-options-api-demos/inputs/textbox/character-count/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/character-count/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/character-count/main.vue b/vue-options-api-demos/inputs/textbox/character-count/main.vue
new file mode 100644
index 00000000..4802c5ca
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/character-count/main.vue
@@ -0,0 +1,64 @@
+
+
+
Message:
+
+
+
+
+
+
+
+ {{ `${String(value).length}/${MAX_LENGTH}` }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textbox/clear-button/main.js b/vue-options-api-demos/inputs/textbox/clear-button/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/clear-button/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/clear-button/main.vue b/vue-options-api-demos/inputs/textbox/clear-button/main.vue
new file mode 100644
index 00000000..91dee770
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/clear-button/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/clear-value/main.js b/vue-options-api-demos/inputs/textbox/clear-value/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/clear-value/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/clear-value/main.vue b/vue-options-api-demos/inputs/textbox/clear-value/main.vue
new file mode 100644
index 00000000..f6a673a6
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/clear-value/main.vue
@@ -0,0 +1,71 @@
+
+
+
Message:
+
+
+
+
+
+
+
+
+
+ Send
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textbox/disabled-adornments/TextBoxIcons.vue b/vue-options-api-demos/inputs/textbox/disabled-adornments/TextBoxIcons.vue
new file mode 100644
index 00000000..4e046ffb
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/disabled-adornments/TextBoxIcons.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textbox/disabled-adornments/main.js b/vue-options-api-demos/inputs/textbox/disabled-adornments/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/disabled-adornments/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/disabled-adornments/main.vue b/vue-options-api-demos/inputs/textbox/disabled-adornments/main.vue
new file mode 100644
index 00000000..7e235626
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/disabled-adornments/main.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textbox/disabled/main.js b/vue-options-api-demos/inputs/textbox/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/disabled/main.vue b/vue-options-api-demos/inputs/textbox/disabled/main.vue
new file mode 100644
index 00000000..9e034ef1
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/disabled/main.vue
@@ -0,0 +1,55 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/forms-support/FormContent.vue b/vue-options-api-demos/inputs/textbox/forms-support/FormContent.vue
new file mode 100644
index 00000000..4f618e52
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/forms-support/FormContent.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+ Clear
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textbox/forms-support/FormTextBox.vue b/vue-options-api-demos/inputs/textbox/forms-support/FormTextBox.vue
new file mode 100644
index 00000000..6e47d446
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/forms-support/FormTextBox.vue
@@ -0,0 +1,90 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textbox/forms-support/main.js b/vue-options-api-demos/inputs/textbox/forms-support/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/forms-support/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/forms-support/main.vue b/vue-options-api-demos/inputs/textbox/forms-support/main.vue
new file mode 100644
index 00000000..f4cdf3a6
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/forms-support/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/forms-support/validators.js b/vue-options-api-demos/inputs/textbox/forms-support/validators.js
new file mode 100644
index 00000000..cd15120e
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/forms-support/validators.js
@@ -0,0 +1,83 @@
+import { getter } from "@progress/kendo-vue-common";
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = (value) =>
+ value ? "" : "It's required to agree with Terms and Conditions.";
+export const emailValidator = (value) =>
+ !value
+ ? "Email field is required."
+ : emailRegex.test(value)
+ ? ""
+ : "Email is not in a valid format.";
+export const nameValidator = (value) =>
+ !value
+ ? "Full Name is required"
+ : value.length < 7
+ ? "Full Name should be at least 7 characters long."
+ : "";
+export const userNameValidator = (value) =>
+ !value
+ ? "User Name is required"
+ : value.length < 5
+ ? "User name should be at least 5 characters long."
+ : "";
+export const phoneValidator = (value) =>
+ !value
+ ? "Phone number is required."
+ : phoneRegex.test(value)
+ ? ""
+ : "Not a valid phone number.";
+export const cardValidator = (value) =>
+ !value
+ ? "Credit card number is required. "
+ : ccardRegex.test(value)
+ ? ""
+ : "Not a valid credit card number format.";
+export const cvcValidator = (value) =>
+ !value
+ ? "CVC code is required,"
+ : cvcRegex.test(value) || value.length !== 3
+ ? ""
+ : "Not a valid CVC code format.";
+export const guestsValidator = (value) =>
+ !value
+ ? "Number of guests is required"
+ : value <= 5
+ ? ""
+ : "Maximum 5 guests";
+export const nightsValidator = (value) =>
+ value ? "" : "Number of Nights is required.";
+export const arrivalDateValidator = (value) =>
+ value ? "" : "Arrival Date is required.";
+export const colorValidator = (value) => (value ? "" : "Color is required.");
+export const requiredValidator = (value) =>
+ value ? "" : "Error: This field is required.";
+export const passwordValidator = (value) =>
+ value && value.length > 8 ? "" : "Password must be at least 8 symbols.";
+export const addressValidator = (value) =>
+ value ? "" : "Address is required.";
+
+const userNameGetter = getter("username");
+const emailGetter = getter("email");
+
+export const formValidator = (values) => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: "Please fill in the following fields.",
+ ["username"]: !userName ? "User Name is required." : "",
+ ["email"]:
+ emailValue && emailRegex.test(emailValue)
+ ? ""
+ : "Email is required and should be in a valid format.",
+ };
+};
diff --git a/vue-options-api-demos/inputs/textbox/icon-name/main.js b/vue-options-api-demos/inputs/textbox/icon-name/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/icon-name/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/icon-name/main.vue b/vue-options-api-demos/inputs/textbox/icon-name/main.vue
new file mode 100644
index 00000000..5f2a9ac6
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/icon-name/main.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/input-mode/main.js b/vue-options-api-demos/inputs/textbox/input-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/input-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/input-mode/main.vue b/vue-options-api-demos/inputs/textbox/input-mode/main.vue
new file mode 100644
index 00000000..ba017f27
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/input-mode/main.vue
@@ -0,0 +1,90 @@
+
+
+
+
+ inputmode=text (default)
+
+
+
+
+
inputmode=tel
+
+
+
+
+
+
+
+
inputmode=email
+
+
+
+
+
+
+
+
inputmode=search
+
+
+
+
+
+
+
+
inputmode=url
+
+
+
+ https://
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/loading-icon/main.js b/vue-options-api-demos/inputs/textbox/loading-icon/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/loading-icon/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/loading-icon/main.vue b/vue-options-api-demos/inputs/textbox/loading-icon/main.vue
new file mode 100644
index 00000000..459b56ec
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/loading-icon/main.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/overview/main.js b/vue-options-api-demos/inputs/textbox/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/overview/main.vue b/vue-options-api-demos/inputs/textbox/overview/main.vue
new file mode 100644
index 00000000..e9e4c698
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/overview/main.vue
@@ -0,0 +1,77 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/overview/overview-styles.css b/vue-options-api-demos/inputs/textbox/overview/overview-styles.css
new file mode 100644
index 00000000..580a7864
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/overview/overview-styles.css
@@ -0,0 +1,171 @@
+.profile-demo.card-container {
+ margin-top: 20px;
+ display: flex;
+ justify-content: center;
+ }
+
+ .profile-demo .custom-card {
+ padding: 32px;
+ width: 712px;
+ height: 350px;
+ gap: 32px;
+ border-radius: 4px 4px 0 0;
+ box-shadow: 0 0 12px 4px rgba(0, 0, 0, 0.08);
+ }
+
+ .profile-demo .card-row {
+ display: flex;
+ gap: 32px;
+ }
+
+ .profile-demo .card-column {
+ flex: 1;
+ }
+
+ .profile-demo .no-flex {
+ flex: 0;
+ }
+
+ .profile-demo .sidebar-container,
+ .profile-demo .avatar-name-container,
+ .profile-demo .name-container,
+ .profile-demo .description-container {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ }
+
+ .profile-demo .sidebar-container {
+ padding: 30px 20px;
+ width: 180px;
+ height: 318px;
+ gap: 50px;
+ }
+
+ .profile-demo .avatar-name-container {
+ gap: 20px;
+ }
+
+ .profile-demo .name-container {
+ gap: 5px;
+ }
+
+ .profile-demo .description-container {
+ width: 100%;
+ gap: 15px;
+ }
+
+ .profile-demo .k-skeleton {
+ border-radius: 4px;
+ opacity: 0.4;
+ }
+
+ .profile-demo .sidebar-container .k-skeleton {
+ opacity: 0.8;
+ }
+
+ .profile-demo .skeleton-avatar {
+ width: 72px;
+ height: 72px;
+ border-radius: 50%;
+ }
+
+ .profile-demo .skeleton-text {
+ width: 104px;
+ height: 15px;
+ }
+
+ .profile-demo .skeleton-small-text {
+ width: 100%;
+ height: 10px;
+ }
+
+ .profile-demo .skeleton-small-text-short {
+ width: 56px;
+ height: 10px;
+ }
+
+ .profile-demo .skeleton-box-small {
+ width: 124px;
+ height: 15px;
+ }
+
+ .profile-demo .skeleton-box-large {
+ width: 100%;
+ height: 30px;
+ }
+
+ .profile-demo .skeleton-box-large-double {
+ width: 100%;
+ height: 56px;
+ }
+
+ .profile-demo .skeleton-container {
+ display: flex;
+ flex-direction: column;
+ gap: 5px;
+ }
+
+ .profile-demo .avatar-title-container {
+ margin-bottom: 14px;
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ }
+
+ .profile-demo .avatar-title-container .skeleton-avatar {
+ width: 48px;
+ height: 48px;
+ display: none;
+ }
+
+ .profile-demo .top {
+ margin-bottom: 20px;
+ }
+
+ .profile-demo .component-container {
+ margin-bottom: 20px;
+ }
+
+ .profile-demo .k-h4 {
+ margin-bottom: 0;
+ opacity: 0.2;
+ }
+
+ @media only screen and (max-width: 559px) {
+ .profile-demo .card-column.no-flex {
+ display: none !important;
+ }
+
+ .profile-demo .avatar-title-container .skeleton-avatar {
+ display: block;
+ }
+
+ .profile-demo .custom-card {
+ width: 360px;
+ gap: 48px;
+ }
+
+ .profile-demo .skeleton-box-large-double {
+ height: 72px;
+ }
+ }
+
+ @media only screen and (max-width: 359px) {
+ .profile-demo .custom-card {
+ padding: 24px;
+ }
+
+ .profile-demo .k-h4 {
+ font-size: 20px;
+ }
+
+ .profile-demo .avatar-title-container .skeleton-avatar {
+ width: 32px;
+ height: 32px;
+ }
+
+ .profile-demo .skeleton-box-large-double {
+ height: 78px;
+ }
+ }
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textbox/readonly/main.js b/vue-options-api-demos/inputs/textbox/readonly/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/readonly/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/readonly/main.vue b/vue-options-api-demos/inputs/textbox/readonly/main.vue
new file mode 100644
index 00000000..62ed931a
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/readonly/main.vue
@@ -0,0 +1,55 @@
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/separator/main.js b/vue-options-api-demos/inputs/textbox/separator/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/separator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/separator/main.vue b/vue-options-api-demos/inputs/textbox/separator/main.vue
new file mode 100644
index 00000000..00eca450
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/separator/main.vue
@@ -0,0 +1,61 @@
+
+
+
Message:
+
+
+
+
+
+
+
+
+ Send
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/inputs/textbox/validation-icon-built-in/main.js b/vue-options-api-demos/inputs/textbox/validation-icon-built-in/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/validation-icon-built-in/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/validation-icon-built-in/main.vue b/vue-options-api-demos/inputs/textbox/validation-icon-built-in/main.vue
new file mode 100644
index 00000000..5af6de81
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/validation-icon-built-in/main.vue
@@ -0,0 +1,22 @@
+
+
+ Valid Input Icon:
+
+
+
+
+ Invalid Input Icon:
+
+
+
+
+
diff --git a/vue-options-api-demos/inputs/textbox/validation-icon/main.js b/vue-options-api-demos/inputs/textbox/validation-icon/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/validation-icon/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/inputs/textbox/validation-icon/main.vue b/vue-options-api-demos/inputs/textbox/validation-icon/main.vue
new file mode 100644
index 00000000..99c076e5
--- /dev/null
+++ b/vue-options-api-demos/inputs/textbox/validation-icon/main.vue
@@ -0,0 +1,69 @@
+
+
+
Message:
+
+
+
+
+
+
+
+ {{ `${String(value).length}/${MAX_LENGTH}` }}
+
+
+
Recommended size is between at least 5 characters
+
+
+
diff --git a/vue-options-api-demos/intl/custom-service/CustomFormatIntlProvider.js b/vue-options-api-demos/intl/custom-service/CustomFormatIntlProvider.js
new file mode 100644
index 00000000..09ab8547
--- /dev/null
+++ b/vue-options-api-demos/intl/custom-service/CustomFormatIntlProvider.js
@@ -0,0 +1,14 @@
+import { IntlProvider } from '@progress/kendo-vue-intl';
+import { CustomFormatIntlService } from './CustomFormatIntlService';
+
+const CustomFormatIntlProvider = {
+ ...IntlProvider,
+ methods: {
+ ...IntlProvider.methods,
+ getIntlService() {
+ return new CustomFormatIntlService(this.$props.locale);
+ }
+ }
+};
+
+export { CustomFormatIntlProvider };
diff --git a/vue-options-api-demos/intl/custom-service/CustomFormatIntlService.js b/vue-options-api-demos/intl/custom-service/CustomFormatIntlService.js
new file mode 100644
index 00000000..d9741a77
--- /dev/null
+++ b/vue-options-api-demos/intl/custom-service/CustomFormatIntlService.js
@@ -0,0 +1,9 @@
+import { IntlService } from '@progress/kendo-vue-intl';
+
+class CustomFormatIntlService extends IntlService {
+ formatDate(value, format) {
+ return `custom format: ${super.formatDate(value, format)}`;
+ }
+}
+
+export { CustomFormatIntlService };
diff --git a/vue-options-api-demos/intl/custom-service/DateFormatter.vue b/vue-options-api-demos/intl/custom-service/DateFormatter.vue
new file mode 100644
index 00000000..36523bf5
--- /dev/null
+++ b/vue-options-api-demos/intl/custom-service/DateFormatter.vue
@@ -0,0 +1,30 @@
+
+
+
+ {{" "}}
+ {{formattedDate}}
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/custom-service/main.js b/vue-options-api-demos/intl/custom-service/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/custom-service/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/custom-service/main.vue b/vue-options-api-demos/intl/custom-service/main.vue
new file mode 100644
index 00000000..37578fba
--- /dev/null
+++ b/vue-options-api-demos/intl/custom-service/main.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/date-formatting/main.js b/vue-options-api-demos/intl/date-formatting/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/date-formatting/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/date-formatting/main.vue b/vue-options-api-demos/intl/date-formatting/main.vue
new file mode 100644
index 00000000..ed0f9a07
--- /dev/null
+++ b/vue-options-api-demos/intl/date-formatting/main.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
Format 2000-11-06 using 'd'
+
+ Result:
+
+ {{ formatDate(dateValue, "d", enLocale) }}
+
+
+
+
+
+
+
+
Format 2000-11-06 using 'y.M.d'
+
+ Result:
+
+ {{ formatDate(dateValue, "y.M.d", deLocale) }}
+
+
+
+
+
+
+
+
Format 2000-11-06 using "EEEE, d.MM.y" (Bulgarian locale)
+
+ Result:
+
+ {{ formatDate(dateValue, "EEEE, d.MM.y", bgLocale) }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/date-parsing/main.js b/vue-options-api-demos/intl/date-parsing/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/date-parsing/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/date-parsing/main.vue b/vue-options-api-demos/intl/date-parsing/main.vue
new file mode 100644
index 00000000..b28857dc
--- /dev/null
+++ b/vue-options-api-demos/intl/date-parsing/main.vue
@@ -0,0 +1,42 @@
+
+
+
+
String "11/6/2000" to parse
+
+ Result:
+
+ {{ enDate ? enDate.toString() : "Invalid date" }}
+
+
+
+
+
+
String "2000-11-06T10:30Z" to parse
+
+ Result:
+
+ {{ utcDate ? utcDate.toString() : "Invalid date" }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/general-formatting/FormattedDate.vue b/vue-options-api-demos/intl/general-formatting/FormattedDate.vue
new file mode 100644
index 00000000..beb7aebe
--- /dev/null
+++ b/vue-options-api-demos/intl/general-formatting/FormattedDate.vue
@@ -0,0 +1,30 @@
+
+ {{ formatDate(value, format, locale) }}
+
+
diff --git a/vue-options-api-demos/intl/general-formatting/FormattedNumber.vue b/vue-options-api-demos/intl/general-formatting/FormattedNumber.vue
new file mode 100644
index 00000000..bd3a9cc2
--- /dev/null
+++ b/vue-options-api-demos/intl/general-formatting/FormattedNumber.vue
@@ -0,0 +1,30 @@
+
+ {{ formatNumber(value, format, locale) }}
+
+
diff --git a/vue-options-api-demos/intl/general-formatting/FormattedText.vue b/vue-options-api-demos/intl/general-formatting/FormattedText.vue
new file mode 100644
index 00000000..b684ddfb
--- /dev/null
+++ b/vue-options-api-demos/intl/general-formatting/FormattedText.vue
@@ -0,0 +1,30 @@
+
+{{ formatText(template, values, locale) }}
+
+
diff --git a/vue-options-api-demos/intl/general-formatting/main.js b/vue-options-api-demos/intl/general-formatting/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/general-formatting/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/general-formatting/main.vue b/vue-options-api-demos/intl/general-formatting/main.vue
new file mode 100644
index 00000000..a63fb4e3
--- /dev/null
+++ b/vue-options-api-demos/intl/general-formatting/main.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
Format Date and Number
+
+ Result:
+
+
+
+
+
+
+
+
+
+
Convert Date to String
+
+ Result:
+
+
+
+
+
+
+
+
+
+
Convert Number to String
+
+ Result:
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/internationalization/getting-started/main.js b/vue-options-api-demos/intl/internationalization/getting-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/internationalization/getting-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/internationalization/getting-started/main.vue b/vue-options-api-demos/intl/internationalization/getting-started/main.vue
new file mode 100644
index 00000000..2c60e977
--- /dev/null
+++ b/vue-options-api-demos/intl/internationalization/getting-started/main.vue
@@ -0,0 +1,27 @@
+
+
+
+ Format {{ decimal }} using 'n2' format with
+ formatNumber function.
+
+ Result: {{ formattedNumber }}
+
+
+
+
diff --git a/vue-options-api-demos/intl/internationalization/overview/Chooser.vue b/vue-options-api-demos/intl/internationalization/overview/Chooser.vue
new file mode 100644
index 00000000..90fe2441
--- /dev/null
+++ b/vue-options-api-demos/intl/internationalization/overview/Chooser.vue
@@ -0,0 +1,33 @@
+
+
+ {{ label }}:
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/internationalization/overview/CurrencyFormatter.vue b/vue-options-api-demos/intl/internationalization/overview/CurrencyFormatter.vue
new file mode 100644
index 00000000..f5d66975
--- /dev/null
+++ b/vue-options-api-demos/intl/internationalization/overview/CurrencyFormatter.vue
@@ -0,0 +1,23 @@
+
+
+ Locale currency: {{" "}}
+ {{formattedNumber}}
+
+
+
+
diff --git a/vue-options-api-demos/intl/internationalization/overview/DateFormatter.vue b/vue-options-api-demos/intl/internationalization/overview/DateFormatter.vue
new file mode 100644
index 00000000..80652816
--- /dev/null
+++ b/vue-options-api-demos/intl/internationalization/overview/DateFormatter.vue
@@ -0,0 +1,22 @@
+
+
+ Locale date: {{" "}}
+ {{formattedDate}}
+
+
+
+
diff --git a/vue-options-api-demos/intl/internationalization/overview/main.js b/vue-options-api-demos/intl/internationalization/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/internationalization/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/internationalization/overview/main.vue b/vue-options-api-demos/intl/internationalization/overview/main.vue
new file mode 100644
index 00000000..a1a1d613
--- /dev/null
+++ b/vue-options-api-demos/intl/internationalization/overview/main.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/load-prebuild-data/DateFormatter.vue b/vue-options-api-demos/intl/load-prebuild-data/DateFormatter.vue
new file mode 100644
index 00000000..8c85cc19
--- /dev/null
+++ b/vue-options-api-demos/intl/load-prebuild-data/DateFormatter.vue
@@ -0,0 +1,30 @@
+
+
+
+ {{" "}}
+ {{formattedDate}}
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/load-prebuild-data/main.js b/vue-options-api-demos/intl/load-prebuild-data/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/load-prebuild-data/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/load-prebuild-data/main.vue b/vue-options-api-demos/intl/load-prebuild-data/main.vue
new file mode 100644
index 00000000..9d2c4815
--- /dev/null
+++ b/vue-options-api-demos/intl/load-prebuild-data/main.vue
@@ -0,0 +1,70 @@
+
+
+
+ Date: {{date.toString()}}
+
+
+
+ Formatted using the default "bg" locale:
+
+
+
+
+
+
+
+ Formatted using the "de" locale:
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/localization-overview/main.js b/vue-options-api-demos/intl/localization-overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/localization-overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/localization-overview/main.vue b/vue-options-api-demos/intl/localization-overview/main.vue
new file mode 100644
index 00000000..921821a4
--- /dev/null
+++ b/vue-options-api-demos/intl/localization-overview/main.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/localization-overview/messages-es.json b/vue-options-api-demos/intl/localization-overview/messages-es.json
new file mode 100644
index 00000000..42f04529
--- /dev/null
+++ b/vue-options-api-demos/intl/localization-overview/messages-es.json
@@ -0,0 +1,5 @@
+{
+ "grid": {
+ "noRecords": "No hay datos disponibles."
+ }
+}
diff --git a/vue-options-api-demos/intl/localization-overview/messages-he.json b/vue-options-api-demos/intl/localization-overview/messages-he.json
new file mode 100644
index 00000000..758e8a91
--- /dev/null
+++ b/vue-options-api-demos/intl/localization-overview/messages-he.json
@@ -0,0 +1,5 @@
+{
+ "grid": {
+ "noRecords": "אין רשומות זמינות"
+ }
+}
diff --git a/vue-options-api-demos/intl/localization/Chooser.vue b/vue-options-api-demos/intl/localization/Chooser.vue
new file mode 100644
index 00000000..90fe2441
--- /dev/null
+++ b/vue-options-api-demos/intl/localization/Chooser.vue
@@ -0,0 +1,33 @@
+
+
+ {{ label }}:
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/localization/MessageComponent.vue b/vue-options-api-demos/intl/localization/MessageComponent.vue
new file mode 100644
index 00000000..dcaf75fd
--- /dev/null
+++ b/vue-options-api-demos/intl/localization/MessageComponent.vue
@@ -0,0 +1,25 @@
+
+
+ {{message}}
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/intl/localization/main.js b/vue-options-api-demos/intl/localization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/localization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/localization/main.vue b/vue-options-api-demos/intl/localization/main.vue
new file mode 100644
index 00000000..96d26b99
--- /dev/null
+++ b/vue-options-api-demos/intl/localization/main.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/localization/messages.js b/vue-options-api-demos/intl/localization/messages.js
new file mode 100644
index 00000000..8cc95c03
--- /dev/null
+++ b/vue-options-api-demos/intl/localization/messages.js
@@ -0,0 +1,16 @@
+export const todaysMessages = 'today';
+export const yesterdaysMessageKey = 'yesterday';
+export const tomorrowsMessageKey = 'tomorrow';
+
+export const messages = {
+ bg: {
+ [yesterdaysMessageKey]: 'Вчера беше чудесен ден!',
+ [todaysMessages]: 'Днес е страхотен ден също!',
+ [tomorrowsMessageKey]: 'Утре ще бъде още по-хубаво!'
+ },
+ es: {
+ [yesterdaysMessageKey]: 'Ayer fue un buen dia!',
+ [todaysMessages]: 'Hoy es un buen día también!',
+ [tomorrowsMessageKey]: 'Mañana será aún mejor!'
+ }
+};
diff --git a/vue-options-api-demos/intl/number-formatting/FormattedNumber.vue b/vue-options-api-demos/intl/number-formatting/FormattedNumber.vue
new file mode 100644
index 00000000..0d163fa6
--- /dev/null
+++ b/vue-options-api-demos/intl/number-formatting/FormattedNumber.vue
@@ -0,0 +1,37 @@
+
+ {{ formatNumber(value, format, formatOptions, locale) }}
+
+
diff --git a/vue-options-api-demos/intl/number-formatting/main.js b/vue-options-api-demos/intl/number-formatting/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/number-formatting/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/number-formatting/main.vue b/vue-options-api-demos/intl/number-formatting/main.vue
new file mode 100644
index 00000000..b019427e
--- /dev/null
+++ b/vue-options-api-demos/intl/number-formatting/main.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
Format 1234.567 using a 'n2' format (2 decimal places)
+
+ Result:
+
+
+
+
+
+
+
+
+
+
Format 1234.567 using a 'c' format
+
+ Result:
+
+
+
+
+
+
+
+
+
+
Format 1234.567 using custom format options
+
+ Result:
+
+
+
+
+
+
+
+
+
+
Format 2345678 using a custom '#,##0.00' format
+
+ Result:
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/number-parsing/main.js b/vue-options-api-demos/intl/number-parsing/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/number-parsing/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/number-parsing/main.vue b/vue-options-api-demos/intl/number-parsing/main.vue
new file mode 100644
index 00000000..f8581405
--- /dev/null
+++ b/vue-options-api-demos/intl/number-parsing/main.vue
@@ -0,0 +1,75 @@
+
+
+
+
String "12.22" to parse
+
+ Result:
+
+ {{
+ floatNumber !== null ? floatNumber.toString() : "Invalid number"
+ }}
+
+
+
+
+
+
String "1.212,22 €" to parse
+
+ Result:
+
+ {{
+ currency !== null ? currency.toString() : "Invalid number"
+ }}
+
+
+
+
+
+
String "10.26 %" to parse
+
+ Result:
+
+ {{
+ percentage !== null ? percentage.toString() : "Invalid number"
+ }}
+
+
+
+
+
+
String "1,0000123e+4" to parse
+
+ Result:
+
+ {{
+ exponential !== null ? exponential.toString() : "Invalid number"
+ }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/reacting/Chooser.vue b/vue-options-api-demos/intl/reacting/Chooser.vue
new file mode 100644
index 00000000..90fe2441
--- /dev/null
+++ b/vue-options-api-demos/intl/reacting/Chooser.vue
@@ -0,0 +1,33 @@
+
+
+ {{ label }}:
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/reacting/CurrencyFormatter.vue b/vue-options-api-demos/intl/reacting/CurrencyFormatter.vue
new file mode 100644
index 00000000..f5d66975
--- /dev/null
+++ b/vue-options-api-demos/intl/reacting/CurrencyFormatter.vue
@@ -0,0 +1,23 @@
+
+
+ Locale currency: {{" "}}
+ {{formattedNumber}}
+
+
+
+
diff --git a/vue-options-api-demos/intl/reacting/DateFormatter.vue b/vue-options-api-demos/intl/reacting/DateFormatter.vue
new file mode 100644
index 00000000..80652816
--- /dev/null
+++ b/vue-options-api-demos/intl/reacting/DateFormatter.vue
@@ -0,0 +1,22 @@
+
+
+ Locale date: {{" "}}
+ {{formattedDate}}
+
+
+
+
diff --git a/vue-options-api-demos/intl/reacting/main.js b/vue-options-api-demos/intl/reacting/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/reacting/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/reacting/main.vue b/vue-options-api-demos/intl/reacting/main.vue
new file mode 100644
index 00000000..a1a1d613
--- /dev/null
+++ b/vue-options-api-demos/intl/reacting/main.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/rtl-support/main.js b/vue-options-api-demos/intl/rtl-support/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/rtl-support/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/rtl-support/main.vue b/vue-options-api-demos/intl/rtl-support/main.vue
new file mode 100644
index 00000000..9ae7ea01
--- /dev/null
+++ b/vue-options-api-demos/intl/rtl-support/main.vue
@@ -0,0 +1,47 @@
+
+
+
+ Tab 1 Content
+
+
+ Tab 2 Content
+
+
+ Tab 3 Content
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/shared/Chooser.vue b/vue-options-api-demos/intl/shared/Chooser.vue
new file mode 100644
index 00000000..90fe2441
--- /dev/null
+++ b/vue-options-api-demos/intl/shared/Chooser.vue
@@ -0,0 +1,33 @@
+
+
+ {{ label }}:
+
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/use-in-component/DateFormatter.vue b/vue-options-api-demos/intl/use-in-component/DateFormatter.vue
new file mode 100644
index 00000000..8c85cc19
--- /dev/null
+++ b/vue-options-api-demos/intl/use-in-component/DateFormatter.vue
@@ -0,0 +1,30 @@
+
+
+
+ {{" "}}
+ {{formattedDate}}
+
+
+
+
+
diff --git a/vue-options-api-demos/intl/use-in-component/main.js b/vue-options-api-demos/intl/use-in-component/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/intl/use-in-component/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/intl/use-in-component/main.vue b/vue-options-api-demos/intl/use-in-component/main.vue
new file mode 100644
index 00000000..9d2c4815
--- /dev/null
+++ b/vue-options-api-demos/intl/use-in-component/main.vue
@@ -0,0 +1,70 @@
+
+
+
+ Date: {{date.toString()}}
+
+
+
+ Formatted using the default "bg" locale:
+
+
+
+
+
+
+
+ Formatted using the "de" locale:
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/labels/error/basic/main.js b/vue-options-api-demos/labels/error/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/labels/error/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/labels/error/basic/main.vue b/vue-options-api-demos/labels/error/basic/main.vue
new file mode 100644
index 00000000..0e1fe0e6
--- /dev/null
+++ b/vue-options-api-demos/labels/error/basic/main.vue
@@ -0,0 +1,48 @@
+
+
+
+ First name:
+
+
+
+ {{validationMessage}}
+
+
+
+
+
diff --git a/vue-options-api-demos/labels/error/direction/main.js b/vue-options-api-demos/labels/error/direction/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/labels/error/direction/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/labels/error/direction/main.vue b/vue-options-api-demos/labels/error/direction/main.vue
new file mode 100644
index 00000000..c0721a41
--- /dev/null
+++ b/vue-options-api-demos/labels/error/direction/main.vue
@@ -0,0 +1,48 @@
+
+
+
+ First name:
+
+
+
+ {{validationMessage}}
+
+
+
+
+
diff --git a/vue-options-api-demos/labels/floatinglabel/basic/main.js b/vue-options-api-demos/labels/floatinglabel/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/labels/floatinglabel/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/labels/floatinglabel/basic/main.vue b/vue-options-api-demos/labels/floatinglabel/basic/main.vue
new file mode 100644
index 00000000..e4d7fa84
--- /dev/null
+++ b/vue-options-api-demos/labels/floatinglabel/basic/main.vue
@@ -0,0 +1,189 @@
+
+
+
+
Input
+
+
+
+
MaskedTextBox
+
+
+
+
NumericTextBox
+
+
+
+
+
DateInput
+
+
+
+
DatePicker
+
+
+
+
+
TimePicker
+
+
+
+
+
DateTimePicker
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/labels/floatinglabel/custom/main.js b/vue-options-api-demos/labels/floatinglabel/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/labels/floatinglabel/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/labels/floatinglabel/custom/main.vue b/vue-options-api-demos/labels/floatinglabel/custom/main.vue
new file mode 100644
index 00000000..f1475b85
--- /dev/null
+++ b/vue-options-api-demos/labels/floatinglabel/custom/main.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/labels/floatinglabel/optional/main.js b/vue-options-api-demos/labels/floatinglabel/optional/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/labels/floatinglabel/optional/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/labels/floatinglabel/optional/main.vue b/vue-options-api-demos/labels/floatinglabel/optional/main.vue
new file mode 100644
index 00000000..40198b46
--- /dev/null
+++ b/vue-options-api-demos/labels/floatinglabel/optional/main.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/labels/floatinglabel/placeholder/main.js b/vue-options-api-demos/labels/floatinglabel/placeholder/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/labels/floatinglabel/placeholder/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/labels/floatinglabel/placeholder/main.vue b/vue-options-api-demos/labels/floatinglabel/placeholder/main.vue
new file mode 100644
index 00000000..e4f9a077
--- /dev/null
+++ b/vue-options-api-demos/labels/floatinglabel/placeholder/main.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/labels/floatinglabel/validation/main.js b/vue-options-api-demos/labels/floatinglabel/validation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/labels/floatinglabel/validation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/labels/floatinglabel/validation/main.vue b/vue-options-api-demos/labels/floatinglabel/validation/main.vue
new file mode 100644
index 00000000..d301b9fc
--- /dev/null
+++ b/vue-options-api-demos/labels/floatinglabel/validation/main.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+ {{validationMessage}}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/labels/hint/basic/main.js b/vue-options-api-demos/labels/hint/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/labels/hint/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/labels/hint/basic/main.vue b/vue-options-api-demos/labels/hint/basic/main.vue
new file mode 100644
index 00000000..7b65325f
--- /dev/null
+++ b/vue-options-api-demos/labels/hint/basic/main.vue
@@ -0,0 +1,35 @@
+
+
+
+ First name:
+
+
+
+ e.g.: Peter
+
+
+
+
+
diff --git a/vue-options-api-demos/labels/hint/direction/main.js b/vue-options-api-demos/labels/hint/direction/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/labels/hint/direction/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/labels/hint/direction/main.vue b/vue-options-api-demos/labels/hint/direction/main.vue
new file mode 100644
index 00000000..006d3a71
--- /dev/null
+++ b/vue-options-api-demos/labels/hint/direction/main.vue
@@ -0,0 +1,35 @@
+
+
+
+ First name:
+
+
+
+ e.g.: Peter
+
+
+
+
+
diff --git a/vue-options-api-demos/labels/label/basic/main.js b/vue-options-api-demos/labels/label/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/labels/label/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/labels/label/basic/main.vue b/vue-options-api-demos/labels/label/basic/main.vue
new file mode 100644
index 00000000..37d82598
--- /dev/null
+++ b/vue-options-api-demos/labels/label/basic/main.vue
@@ -0,0 +1,27 @@
+
+
+
+ First Name:
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/labels/label/custom/main.js b/vue-options-api-demos/labels/label/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/labels/label/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/labels/label/custom/main.vue b/vue-options-api-demos/labels/label/custom/main.vue
new file mode 100644
index 00000000..1e9b18dd
--- /dev/null
+++ b/vue-options-api-demos/labels/label/custom/main.vue
@@ -0,0 +1,39 @@
+
+
+
+ Shirt Size:
+
+
+
+
+
+
diff --git a/vue-options-api-demos/labels/label/optional/main.js b/vue-options-api-demos/labels/label/optional/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/labels/label/optional/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/labels/label/optional/main.vue b/vue-options-api-demos/labels/label/optional/main.vue
new file mode 100644
index 00000000..e532083c
--- /dev/null
+++ b/vue-options-api-demos/labels/label/optional/main.vue
@@ -0,0 +1,26 @@
+
+
+
+ First Name:
+
+
+
+
+
+
diff --git a/vue-options-api-demos/labels/label/validation/main.js b/vue-options-api-demos/labels/label/validation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/labels/label/validation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/labels/label/validation/main.vue b/vue-options-api-demos/labels/label/validation/main.vue
new file mode 100644
index 00000000..117e3f06
--- /dev/null
+++ b/vue-options-api-demos/labels/label/validation/main.vue
@@ -0,0 +1,54 @@
+
+
+
+
+ First name:
+
+
+
+
+ {{validationMessage}}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/accessibility/main.js b/vue-options-api-demos/layout/actionsheet/accessibility/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/accessibility/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/actionsheet/accessibility/main.vue b/vue-options-api-demos/layout/actionsheet/accessibility/main.vue
new file mode 100644
index 00000000..d5329a95
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/accessibility/main.vue
@@ -0,0 +1,11 @@
+
+ Test test
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/animation/main.js b/vue-options-api-demos/layout/actionsheet/animation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/animation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/actionsheet/animation/main.vue b/vue-options-api-demos/layout/actionsheet/animation/main.vue
new file mode 100644
index 00000000..70e49730
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/animation/main.vue
@@ -0,0 +1,61 @@
+
+
+
+ OPEN ACTION SHEET
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/custom-rendering/content/main.js b/vue-options-api-demos/layout/actionsheet/custom-rendering/content/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/custom-rendering/content/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/actionsheet/custom-rendering/content/main.vue b/vue-options-api-demos/layout/actionsheet/custom-rendering/content/main.vue
new file mode 100644
index 00000000..7f01c455
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/custom-rendering/content/main.vue
@@ -0,0 +1,71 @@
+
+
+
+ OPEN ACTION SHEET
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/custom-rendering/footer/main.js b/vue-options-api-demos/layout/actionsheet/custom-rendering/footer/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/custom-rendering/footer/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/actionsheet/custom-rendering/footer/main.vue b/vue-options-api-demos/layout/actionsheet/custom-rendering/footer/main.vue
new file mode 100644
index 00000000..5b2e6f45
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/custom-rendering/footer/main.vue
@@ -0,0 +1,85 @@
+
+
+
+ OPEN ACTION SHEET
+
+
+
+
+ Cancel
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/custom-rendering/header/main.js b/vue-options-api-demos/layout/actionsheet/custom-rendering/header/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/custom-rendering/header/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/actionsheet/custom-rendering/header/main.vue b/vue-options-api-demos/layout/actionsheet/custom-rendering/header/main.vue
new file mode 100644
index 00000000..f75a3e3e
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/custom-rendering/header/main.vue
@@ -0,0 +1,82 @@
+
+
+
+ OPEN ACTION SHEET
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/events/Logger.vue b/vue-options-api-demos/layout/actionsheet/events/Logger.vue
new file mode 100644
index 00000000..aec622fe
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/events/main.js b/vue-options-api-demos/layout/actionsheet/events/main.js
new file mode 100644
index 00000000..1f1c6c86
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/events/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
+
diff --git a/vue-options-api-demos/layout/actionsheet/events/main.vue b/vue-options-api-demos/layout/actionsheet/events/main.vue
new file mode 100644
index 00000000..9fd4c9da
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/events/main.vue
@@ -0,0 +1,70 @@
+
+
+
+ OPEN ACTION SHEET
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/items/disabling/main.js b/vue-options-api-demos/layout/actionsheet/items/disabling/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/items/disabling/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/actionsheet/items/disabling/main.vue b/vue-options-api-demos/layout/actionsheet/items/disabling/main.vue
new file mode 100644
index 00000000..d7dfdd4f
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/items/disabling/main.vue
@@ -0,0 +1,59 @@
+
+
+
+ OPEN ACTION SHEET
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/items/groups/main.js b/vue-options-api-demos/layout/actionsheet/items/groups/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/items/groups/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/actionsheet/items/groups/main.vue b/vue-options-api-demos/layout/actionsheet/items/groups/main.vue
new file mode 100644
index 00000000..d6c7cbaf
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/items/groups/main.vue
@@ -0,0 +1,65 @@
+
+
+
+ OPEN ACTION SHEET
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/items/icons/main.js b/vue-options-api-demos/layout/actionsheet/items/icons/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/items/icons/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/actionsheet/items/icons/main.vue b/vue-options-api-demos/layout/actionsheet/items/icons/main.vue
new file mode 100644
index 00000000..04890a85
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/items/icons/main.vue
@@ -0,0 +1,62 @@
+
+
+
+ OPEN ACTION SHEET
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/items/overview/main.js b/vue-options-api-demos/layout/actionsheet/items/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/items/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/actionsheet/items/overview/main.vue b/vue-options-api-demos/layout/actionsheet/items/overview/main.vue
new file mode 100644
index 00000000..1a53e0fe
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/items/overview/main.vue
@@ -0,0 +1,60 @@
+
+
+
+ OPEN ACTION SHEET
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/actionsheet/items/styling/main.js b/vue-options-api-demos/layout/actionsheet/items/styling/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/items/styling/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/actionsheet/items/styling/main.vue b/vue-options-api-demos/layout/actionsheet/items/styling/main.vue
new file mode 100644
index 00000000..3a518af1
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/items/styling/main.vue
@@ -0,0 +1,69 @@
+
+
+
+ OPEN ACTION SHEET
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/items/title/main.js b/vue-options-api-demos/layout/actionsheet/items/title/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/items/title/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/actionsheet/items/title/main.vue b/vue-options-api-demos/layout/actionsheet/items/title/main.vue
new file mode 100644
index 00000000..7e4966cf
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/items/title/main.vue
@@ -0,0 +1,60 @@
+
+
+
+ OPEN ACTION SHEET
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/keyboard-navigation/main.js b/vue-options-api-demos/layout/actionsheet/keyboard-navigation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/keyboard-navigation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/actionsheet/keyboard-navigation/main.vue b/vue-options-api-demos/layout/actionsheet/keyboard-navigation/main.vue
new file mode 100644
index 00000000..192910f0
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/keyboard-navigation/main.vue
@@ -0,0 +1,56 @@
+
+
+
+ OPEN ACTION SHEET
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/actionsheet/overview/main.js b/vue-options-api-demos/layout/actionsheet/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/actionsheet/overview/main.vue b/vue-options-api-demos/layout/actionsheet/overview/main.vue
new file mode 100644
index 00000000..26a93604
--- /dev/null
+++ b/vue-options-api-demos/layout/actionsheet/overview/main.vue
@@ -0,0 +1,199 @@
+
+
+
+
+
+
Current City
+
+
+
+
+ Rome
+ Capital of Italy
+
+
+
+
+ Rome is a sprawling, cosmopolitan city with nearly 3,000 years
+ of globally influential art, architecture and culture on
+ display.
+
+
+ Ancient ruins such as the Forum and the Colosseum evoke the
+ power of the former Roman Empire.
+
+
+
+
+
+ OPEN ACTION SHEET
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/appbar/overview/main.js b/vue-options-api-demos/layout/appbar/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/appbar/overview/main.vue b/vue-options-api-demos/layout/appbar/overview/main.vue
new file mode 100644
index 00000000..f3344992
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/overview/main.vue
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+ Kendo UI for Vue
+
+
+
+
+
+
+
+ What's New
+
+
+ About
+
+
+ Contacts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/appbar/position-mode/main.js b/vue-options-api-demos/layout/appbar/position-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/position-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/appbar/position-mode/main.vue b/vue-options-api-demos/layout/appbar/position-mode/main.vue
new file mode 100644
index 00000000..4171b9fe
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/position-mode/main.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+
+
+
+ Weather News
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Light variable wind or sea breeze. Partly cloudy with sunny spells today,
+ but patches of fog in some places by the coast and some afternoon
+ rainshowerstowards the east. Day time temperatures 10 to 16 deg. C.
+
+
+ Westerly or variable wind 3-8 m/s tomorrow. Mostly cloudy and locally some
+ light rain in the west part of Iceland. Partly cloudy in other parts, but
+ fog near the Eastfjords. Temperature 10 to 17 deg. C, warmest in
+ Southeast-Iceland.
+
+
+ Westerly 5-10 m/s and cloudy in the west part. Light variable wind and
+ widely fair in other parts of the country, but fog in places by the north
+ and east coast. Temperature 10 to 17 deg. C., warmest in the southeast.
+
+
+ On Friday and Saturday: Westerly wind 3-10 m/s. Mostly cloudy and light
+ precipitation, but mainly dry in the east. Temperature 10 to 15 deg. C.
+
+
+
+
+
+
+
+
+ What's New
+
+
+ Subscriptions
+
+
+ Successful Stories
+
+
+ About Us
+
+
+ Contacts
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/appbar/position/main.js b/vue-options-api-demos/layout/appbar/position/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/position/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/appbar/position/main.vue b/vue-options-api-demos/layout/appbar/position/main.vue
new file mode 100644
index 00000000..164c5a3f
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/position/main.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+ Weather News
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Light variable wind or sea breeze. Partly cloudy with sunny spells today,
+ but patches of fog in some places by the coast and some afternoon
+ rainshowerstowards the east. Day time temperatures 10 to 16 deg. C.
+
+
+ Westerly or variable wind 3-8 m/s tomorrow. Mostly cloudy and locally some
+ light rain in the west part of Iceland. Partly cloudy in other parts, but
+ fog near the Eastfjords. Temperature 10 to 17 deg. C, warmest in
+ Southeast-Iceland.
+
+
+ Westerly 5-10 m/s and cloudy in the west part. Light variable wind and
+ widely fair in other parts of the country, but fog in places by the north
+ and east coast. Temperature 10 to 17 deg. C., warmest in the southeast.
+
+
+ On Friday and Saturday: Westerly wind 3-10 m/s. Mostly cloudy and light
+ precipitation, but mainly dry in the east. Temperature 10 to 15 deg. C.
+
+
+
+
+
+
+
+
+ What's New
+
+
+ Subscriptions
+
+
+ Successful Stories
+
+
+ About Us
+
+
+ Contacts
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/appbar/responsive-design/main.js b/vue-options-api-demos/layout/appbar/responsive-design/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/responsive-design/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/appbar/responsive-design/main.vue b/vue-options-api-demos/layout/appbar/responsive-design/main.vue
new file mode 100644
index 00000000..5adde0a9
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/responsive-design/main.vue
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+
+
+
+ Kendo UI for Vue
+
+
+
+
+
+
+
+ What's New
+
+
+ About
+
+
+ Contacts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/appbar/sections/main.js b/vue-options-api-demos/layout/appbar/sections/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/sections/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/appbar/sections/main.vue b/vue-options-api-demos/layout/appbar/sections/main.vue
new file mode 100644
index 00000000..52adc7e1
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/sections/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+ Gallery
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/appbar/separators/main.js b/vue-options-api-demos/layout/appbar/separators/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/separators/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/appbar/separators/main.vue b/vue-options-api-demos/layout/appbar/separators/main.vue
new file mode 100644
index 00000000..48f4f1c8
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/separators/main.vue
@@ -0,0 +1,74 @@
+
+
+
+
+ Bookings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/appbar/spacings/main.js b/vue-options-api-demos/layout/appbar/spacings/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/spacings/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/appbar/spacings/main.vue b/vue-options-api-demos/layout/appbar/spacings/main.vue
new file mode 100644
index 00000000..635dd322
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/spacings/main.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+ My Playlist
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/appbar/theme-color/main.js b/vue-options-api-demos/layout/appbar/theme-color/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/theme-color/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/appbar/theme-color/main.vue b/vue-options-api-demos/layout/appbar/theme-color/main.vue
new file mode 100644
index 00000000..f68b8152
--- /dev/null
+++ b/vue-options-api-demos/layout/appbar/theme-color/main.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ color.text }} AppBar
+
+ {{ color.value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/avatar/appearance/border/main.js b/vue-options-api-demos/layout/avatar/appearance/border/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/appearance/border/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/avatar/appearance/border/main.vue b/vue-options-api-demos/layout/avatar/appearance/border/main.vue
new file mode 100644
index 00000000..aaeb8f12
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/appearance/border/main.vue
@@ -0,0 +1,56 @@
+
+
+
Avatar Border
+
+
+
JS
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/avatar/appearance/fill-mode/main.js b/vue-options-api-demos/layout/avatar/appearance/fill-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/appearance/fill-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/avatar/appearance/fill-mode/main.vue b/vue-options-api-demos/layout/avatar/appearance/fill-mode/main.vue
new file mode 100644
index 00000000..c5fcd3d4
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/appearance/fill-mode/main.vue
@@ -0,0 +1,76 @@
+
+
+
+ Solid
+
+
+
+
+
+ Outline
+
+
+
+
+
+ Custom
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/avatar/appearance/rounded/main.js b/vue-options-api-demos/layout/avatar/appearance/rounded/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/appearance/rounded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/avatar/appearance/rounded/main.vue b/vue-options-api-demos/layout/avatar/appearance/rounded/main.vue
new file mode 100644
index 00000000..68d9290b
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/appearance/rounded/main.vue
@@ -0,0 +1,77 @@
+
+
+
+
+ Null
+
+
+
+
+
+ Small
+
+
+
+
+
+ Medium
+
+
+
+
+
+ Large
+
+
+
+
+
+ Full
+
+
+
+
+
+ Custom
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/avatar/appearance/shapes/main.js b/vue-options-api-demos/layout/avatar/appearance/shapes/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/appearance/shapes/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/avatar/appearance/shapes/main.vue b/vue-options-api-demos/layout/avatar/appearance/shapes/main.vue
new file mode 100644
index 00000000..bd3fa221
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/appearance/shapes/main.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+ JS
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/avatar/appearance/size/main.js b/vue-options-api-demos/layout/avatar/appearance/size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/appearance/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/avatar/appearance/size/main.vue b/vue-options-api-demos/layout/avatar/appearance/size/main.vue
new file mode 100644
index 00000000..4121e0a2
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/appearance/size/main.vue
@@ -0,0 +1,62 @@
+
+
+
+ Small
+
+
+
+
+
+ Medium
+
+
+
+
+
+ Large
+
+
+
+
+
+ Custom size
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/avatar/appearance/theme-color/main.js b/vue-options-api-demos/layout/avatar/appearance/theme-color/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/appearance/theme-color/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/avatar/appearance/theme-color/main.vue b/vue-options-api-demos/layout/avatar/appearance/theme-color/main.vue
new file mode 100644
index 00000000..88ef17c8
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/appearance/theme-color/main.vue
@@ -0,0 +1,40 @@
+
+
+
+
+ {{color.substr(0, 2)}}
+
+
- {{color}}
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/avatar/overview/main.js b/vue-options-api-demos/layout/avatar/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/avatar/overview/main.vue b/vue-options-api-demos/layout/avatar/overview/main.vue
new file mode 100644
index 00000000..e1184653
--- /dev/null
+++ b/vue-options-api-demos/layout/avatar/overview/main.vue
@@ -0,0 +1,145 @@
+
+
+
Contacts
+
+
+
+
+
+ {{ contact.avatar }}
+
+
+
+ {{ contact.name }}
+
+
+ {{ contact.position }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ contact.name }}
+
+
+ {{ contact.position }}
+
+
+
+
+
+
+
+
+
+
+
Unknown
+
Not specified
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/appearance/BottomNavigationStyleConfigurator.vue b/vue-options-api-demos/layout/bottomnavigation/appearance/BottomNavigationStyleConfigurator.vue
new file mode 100644
index 00000000..81b632a7
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/appearance/BottomNavigationStyleConfigurator.vue
@@ -0,0 +1,93 @@
+
+
+
+ Configurator
+
+
+
+
+ Theme
+
+
+
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/bottomnavigation/appearance/main.js b/vue-options-api-demos/layout/bottomnavigation/appearance/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/appearance/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/bottomnavigation/appearance/main.vue b/vue-options-api-demos/layout/bottomnavigation/appearance/main.vue
new file mode 100644
index 00000000..6dfe8a29
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/appearance/main.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/basic-usage/Calendar.vue b/vue-options-api-demos/layout/bottomnavigation/basic-usage/Calendar.vue
new file mode 100644
index 00000000..69d326c6
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/basic-usage/Calendar.vue
@@ -0,0 +1,25 @@
+
+
+
Calendar
+
+
11/5 Monday
+
+
16:00
+
+
Job interview for internal position
+
+
+
21:00
+
+
Martha Birthday
+
+
Tomorrow
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/basic-usage/Inbox.vue b/vue-options-api-demos/layout/bottomnavigation/basic-usage/Inbox.vue
new file mode 100644
index 00000000..e4a1626c
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/basic-usage/Inbox.vue
@@ -0,0 +1,64 @@
+
+
+
Mail Inbox
+
+
+
+ AB
+
+
+ Hi Tom, Since Monday I'll be out of office, I'm rescheduling the
+ meeting for Tuesday.
+
+
+
+
Last Week
+
+
+ TY
+
+
+ Hi Tom, my aunt comes for a visit this Saturday, so I can’t come back
+ to St. Pete…
+
+
+
+
+ IH
+
+
+ Dear All, We would like to inform you that IT will be doing planned
+ upgrades…
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/basic-usage/Profile.vue b/vue-options-api-demos/layout/bottomnavigation/basic-usage/Profile.vue
new file mode 100644
index 00000000..88b1fa80
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/basic-usage/Profile.vue
@@ -0,0 +1,68 @@
+
+
+
My Profile
+
+
+
+ />
+
+
myusername@mail.com
+
+
Calendars
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/basic-usage/index.js b/vue-options-api-demos/layout/bottomnavigation/basic-usage/index.js
new file mode 100644
index 00000000..f45b152f
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/basic-usage/index.js
@@ -0,0 +1,29 @@
+import { createWebHistory, createRouter } from "vue-router";
+import Inbox from "./Inbox";
+import Calendar from "./Calendar";
+import Profile from "./Profile";
+
+const routes = [
+ {
+ path: "/layout/bottomnavigation/overview/inbox",
+ name: "Inbox",
+ component: Inbox
+ },
+ {
+ path: "/layout/bottomnavigation/overview/calendar",
+ name: "Calendar",
+ component: Calendar
+ },
+ {
+ path: "/layout/bottomnavigation/overview/profile",
+ name: "Profile",
+ component: Profile
+ }
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes
+});
+
+export default router;
diff --git a/vue-options-api-demos/layout/bottomnavigation/basic-usage/main.js b/vue-options-api-demos/layout/bottomnavigation/basic-usage/main.js
new file mode 100644
index 00000000..b51f2405
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/basic-usage/main.js
@@ -0,0 +1,5 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+import router from "./index.js";
+
+createApp(App).use(router).mount("#app");
diff --git a/vue-options-api-demos/layout/bottomnavigation/basic-usage/main.vue b/vue-options-api-demos/layout/bottomnavigation/basic-usage/main.vue
new file mode 100644
index 00000000..365c1dba
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/basic-usage/main.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/custom-rendering/main.js b/vue-options-api-demos/layout/bottomnavigation/custom-rendering/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/custom-rendering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/bottomnavigation/custom-rendering/main.vue b/vue-options-api-demos/layout/bottomnavigation/custom-rendering/main.vue
new file mode 100644
index 00000000..1aed5db5
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/custom-rendering/main.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
Custom Item Demo
+
+
+
+
+
+ {{ props.item.notifications }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/fill/BottomNavigationStyleConfigurator.vue b/vue-options-api-demos/layout/bottomnavigation/fill/BottomNavigationStyleConfigurator.vue
new file mode 100644
index 00000000..b804c58f
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/fill/BottomNavigationStyleConfigurator.vue
@@ -0,0 +1,62 @@
+
+
+
+ Configurator
+
+
+
+
+ Fill Mode
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/bottomnavigation/fill/main.js b/vue-options-api-demos/layout/bottomnavigation/fill/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/fill/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/bottomnavigation/fill/main.vue b/vue-options-api-demos/layout/bottomnavigation/fill/main.vue
new file mode 100644
index 00000000..3340b11d
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/fill/main.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/item-content/main.js b/vue-options-api-demos/layout/bottomnavigation/item-content/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/item-content/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/bottomnavigation/item-content/main.vue b/vue-options-api-demos/layout/bottomnavigation/item-content/main.vue
new file mode 100644
index 00000000..bb14800e
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/item-content/main.vue
@@ -0,0 +1,102 @@
+
+
+
+
+ Item content settings
+
+
+
Inbox Content
+
Calendar Content
+
Profile Content
+
More Content
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/item-flow/main.js b/vue-options-api-demos/layout/bottomnavigation/item-flow/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/item-flow/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/bottomnavigation/item-flow/main.vue b/vue-options-api-demos/layout/bottomnavigation/item-flow/main.vue
new file mode 100644
index 00000000..01681ffc
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/item-flow/main.vue
@@ -0,0 +1,89 @@
+
+
+
+
+ Item flow settings
+
+
+
Inbox Content
+
Calendar Content
+
Profile Content
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/item-render/main.js b/vue-options-api-demos/layout/bottomnavigation/item-render/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/item-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/bottomnavigation/item-render/main.vue b/vue-options-api-demos/layout/bottomnavigation/item-render/main.vue
new file mode 100644
index 00000000..0e7bd958
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/item-render/main.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ {{ props.item.text }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/position-mode/main.js b/vue-options-api-demos/layout/bottomnavigation/position-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/position-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/bottomnavigation/position-mode/main.vue b/vue-options-api-demos/layout/bottomnavigation/position-mode/main.vue
new file mode 100644
index 00000000..d6dfd80a
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/position-mode/main.vue
@@ -0,0 +1,124 @@
+
+
+
+
+ Position mode settings
+
+ * Scoll the page to see the position mode differences
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est, harum
+ quibusdam praesentium voluptatibus et similique dolorum aliquid ab saepe
+ enim numquam mollitia laborum alias doloremque impedit voluptates
+ reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est, harum
+ quibusdam praesentium voluptatibus et similique dolorum aliquid ab saepe
+ enim numquam mollitia laborum alias doloremque impedit voluptates
+ reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est, harum
+ quibusdam praesentium voluptatibus et similique dolorum aliquid ab saepe
+ enim numquam mollitia laborum alias doloremque impedit voluptates
+ reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est, harum
+ quibusdam praesentium voluptatibus et similique dolorum aliquid ab saepe
+ enim numquam mollitia laborum alias doloremque impedit voluptates
+ reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est, harum
+ quibusdam praesentium voluptatibus et similique dolorum aliquid ab saepe
+ enim numquam mollitia laborum alias doloremque impedit voluptates
+ reprehenderit.
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/routing/Bills.vue b/vue-options-api-demos/layout/bottomnavigation/routing/Bills.vue
new file mode 100644
index 00000000..7914866d
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/routing/Bills.vue
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/routing/Home.vue b/vue-options-api-demos/layout/bottomnavigation/routing/Home.vue
new file mode 100644
index 00000000..df8d019f
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/routing/Home.vue
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/routing/More.vue b/vue-options-api-demos/layout/bottomnavigation/routing/More.vue
new file mode 100644
index 00000000..ebab3126
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/routing/More.vue
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/routing/Payments.vue b/vue-options-api-demos/layout/bottomnavigation/routing/Payments.vue
new file mode 100644
index 00000000..694b7c58
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/routing/Payments.vue
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/routing/Services.vue b/vue-options-api-demos/layout/bottomnavigation/routing/Services.vue
new file mode 100644
index 00000000..a8d10122
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/routing/Services.vue
@@ -0,0 +1,26 @@
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/routing/index.js b/vue-options-api-demos/layout/bottomnavigation/routing/index.js
new file mode 100644
index 00000000..a00b033e
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/routing/index.js
@@ -0,0 +1,41 @@
+import { createWebHistory, createRouter } from "vue-router";
+import Home from "./Home";
+import Bills from "./Bills";
+import Payments from "./Payments";
+import Services from "./Services";
+import More from "./More";
+
+const routes = [
+ {
+ path: "/layout/bottomnavigation/routing/home",
+ name: "Home",
+ component: Home
+ },
+ {
+ path: "/layout/bottomnavigation/routing/bills",
+ name: "Bills",
+ component: Bills
+ },
+ {
+ path: "/layout/bottomnavigation/routing/payments",
+ name: "Payments",
+ component: Payments
+ },
+ {
+ path: "/layout/bottomnavigation/routing/services",
+ name: "Services",
+ component: Services
+ },
+ {
+ path: "/layout/bottomnavigation/routing/more",
+ name: "More",
+ component: More
+ }
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes
+});
+
+export default router;
diff --git a/vue-options-api-demos/layout/bottomnavigation/routing/main.js b/vue-options-api-demos/layout/bottomnavigation/routing/main.js
new file mode 100644
index 00000000..b51f2405
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/routing/main.js
@@ -0,0 +1,5 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+import router from "./index.js";
+
+createApp(App).use(router).mount("#app");
diff --git a/vue-options-api-demos/layout/bottomnavigation/routing/main.vue b/vue-options-api-demos/layout/bottomnavigation/routing/main.vue
new file mode 100644
index 00000000..67b466f7
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/routing/main.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/bottomnavigation/theme-color/BottomNavigationStyleConfigurator.vue b/vue-options-api-demos/layout/bottomnavigation/theme-color/BottomNavigationStyleConfigurator.vue
new file mode 100644
index 00000000..b6da4570
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/theme-color/BottomNavigationStyleConfigurator.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/bottomnavigation/theme-color/main.js b/vue-options-api-demos/layout/bottomnavigation/theme-color/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/theme-color/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/bottomnavigation/theme-color/main.vue b/vue-options-api-demos/layout/bottomnavigation/theme-color/main.vue
new file mode 100644
index 00000000..1bba4bb2
--- /dev/null
+++ b/vue-options-api-demos/layout/bottomnavigation/theme-color/main.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ducimus optio
+ vitae dolorem sunt! Obcaecati reprehenderit vero itaque ex. Magnam ex
+ error rem, est quasi libero veniam ipsa enim quod. Porro. Lorem, ipsum
+ dolor sit amet consectetur adipisicing elit. Fuga blanditiis est,
+ harum quibusdam praesentium voluptatibus et similique dolorum aliquid
+ ab saepe enim numquam mollitia laborum alias doloremque impedit
+ voluptates reprehenderit.
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/card/actions/main.js b/vue-options-api-demos/layout/card/actions/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/card/actions/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/card/actions/main.vue b/vue-options-api-demos/layout/card/actions/main.vue
new file mode 100644
index 00000000..321dc95a
--- /dev/null
+++ b/vue-options-api-demos/layout/card/actions/main.vue
@@ -0,0 +1,109 @@
+
+
+
+
Actions Orientation
+
+
+
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+
Actions Layout
+
+
+
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/card/layouts/main.js b/vue-options-api-demos/layout/card/layouts/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/card/layouts/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/card/layouts/main.vue b/vue-options-api-demos/layout/card/layouts/main.vue
new file mode 100644
index 00000000..edeca18b
--- /dev/null
+++ b/vue-options-api-demos/layout/card/layouts/main.vue
@@ -0,0 +1,79 @@
+
+
+
+
Change taps position:
+
+
+
+
+
+
+
+ Card Title
+ Card Subtitle
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+ Card Title
+ Card Subtitle
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/card/orientation/main.js b/vue-options-api-demos/layout/card/orientation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/card/orientation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/card/orientation/main.vue b/vue-options-api-demos/layout/card/orientation/main.vue
new file mode 100644
index 00000000..4d3de377
--- /dev/null
+++ b/vue-options-api-demos/layout/card/orientation/main.vue
@@ -0,0 +1,108 @@
+
+
+
+
Horizontal Card
+
+
+
+
+
+ Coffee with friends
+
+
+
+
+
+
+
+ 4/5 (681)
+
+
+
+
+
+ The right place to be if you're in love with high quality espresso
+ or tea. We offer wide range to top coffee brands as Davidoff Cafe,
+ Lavazza, Tchibo, Illy.
+
+
+
+ Review
+
+
+
+
+
+
Vertical Card
+
+
+
+
+
+ Coffee with friends
+
+
+
+
+
+
+
+ 4/5 (681)
+
+
+
+
+
+ The right place to be if you're in love with high quality espresso
+ or tea. We offer wide range to top coffee brands as Davidoff Cafe,
+ Lavazza, Tchibo, Illy.
+
+
+
+ Review
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/card/overview/main.js b/vue-options-api-demos/layout/card/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/card/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/card/overview/main.vue b/vue-options-api-demos/layout/card/overview/main.vue
new file mode 100644
index 00000000..2376c50d
--- /dev/null
+++ b/vue-options-api-demos/layout/card/overview/main.vue
@@ -0,0 +1,236 @@
+
+
+
+
+
+
+
+
+
+
+ {{ card.headerTitle }}
+
+
+ {{ card.headerSubtitle }}
+
+
+
+
+
+
+ postLikesCount(card)"
+ >
+
+ commentClick(card)"
+ >
+
+
+
+
+ {{ card.postLikes }} likes
+
+
+
+
+
+
+
+
+
+ SS
+
+
+
+ {{ comment.text }}
+
+
+ 1s ago
+
+ {{ comment.likes }} like
+
+
+
+
+
+
+
+
+
+
+
+
+
+ postComment(card)"
+ >
+ Post
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/card/types/main.js b/vue-options-api-demos/layout/card/types/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/card/types/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/card/types/main.vue b/vue-options-api-demos/layout/card/types/main.vue
new file mode 100644
index 00000000..acf9b164
--- /dev/null
+++ b/vue-options-api-demos/layout/card/types/main.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+ Card Title
+ Card Subtitle
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+ Card Title
+ Card Subtitle
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+
+
+ Card Title
+ Card Subtitle
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+ Card Title
+ Card Subtitle
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+
+
+ Card Title
+ Card Subtitle
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+ Card Title
+ Card Subtitle
+
+ Some quick example text to build on the card title and make up the
+ bulk of the card content.
+
+
+
+ Action 1
+ Action 2
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/data-binding/local/main.js b/vue-options-api-demos/layout/context-menu/data-binding/local/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/data-binding/local/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/data-binding/local/main.vue b/vue-options-api-demos/layout/context-menu/data-binding/local/main.vue
new file mode 100644
index 00000000..67758ebb
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/data-binding/local/main.vue
@@ -0,0 +1,83 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/data-binding/remote/main.js b/vue-options-api-demos/layout/context-menu/data-binding/remote/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/data-binding/remote/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/data-binding/remote/main.vue b/vue-options-api-demos/layout/context-menu/data-binding/remote/main.vue
new file mode 100644
index 00000000..9ae402ea
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/data-binding/remote/main.vue
@@ -0,0 +1,95 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/events/Logger.vue b/vue-options-api-demos/layout/context-menu/events/Logger.vue
new file mode 100644
index 00000000..aec622fe
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/events/main.js b/vue-options-api-demos/layout/context-menu/events/main.js
new file mode 100644
index 00000000..1f1c6c86
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/events/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
+
diff --git a/vue-options-api-demos/layout/context-menu/events/main.vue b/vue-options-api-demos/layout/context-menu/events/main.vue
new file mode 100644
index 00000000..3785b96d
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/events/main.vue
@@ -0,0 +1,97 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/items/properties/disabled/main.js b/vue-options-api-demos/layout/context-menu/items/properties/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/properties/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/items/properties/disabled/main.vue b/vue-options-api-demos/layout/context-menu/items/properties/disabled/main.vue
new file mode 100644
index 00000000..952be9a9
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/properties/disabled/main.vue
@@ -0,0 +1,85 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/items/properties/icon/main.js b/vue-options-api-demos/layout/context-menu/items/properties/icon/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/properties/icon/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/items/properties/icon/main.vue b/vue-options-api-demos/layout/context-menu/items/properties/icon/main.vue
new file mode 100644
index 00000000..265714aa
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/properties/icon/main.vue
@@ -0,0 +1,142 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/items/properties/styles/main.js b/vue-options-api-demos/layout/context-menu/items/properties/styles/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/properties/styles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/items/properties/styles/main.vue b/vue-options-api-demos/layout/context-menu/items/properties/styles/main.vue
new file mode 100644
index 00000000..2ab59f80
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/properties/styles/main.vue
@@ -0,0 +1,87 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/items/properties/text/main.js b/vue-options-api-demos/layout/context-menu/items/properties/text/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/properties/text/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/items/properties/text/main.vue b/vue-options-api-demos/layout/context-menu/items/properties/text/main.vue
new file mode 100644
index 00000000..7cba5676
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/properties/text/main.vue
@@ -0,0 +1,79 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/items/properties/url/main.js b/vue-options-api-demos/layout/context-menu/items/properties/url/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/properties/url/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/items/properties/url/main.vue b/vue-options-api-demos/layout/context-menu/items/properties/url/main.vue
new file mode 100644
index 00000000..d950ccb4
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/properties/url/main.vue
@@ -0,0 +1,81 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/items/rendering/content-render/main.js b/vue-options-api-demos/layout/context-menu/items/rendering/content-render/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/rendering/content-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/items/rendering/content-render/main.vue b/vue-options-api-demos/layout/context-menu/items/rendering/content-render/main.vue
new file mode 100644
index 00000000..419ef73a
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/rendering/content-render/main.vue
@@ -0,0 +1,88 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+ Custom content for itemId: {{ props.itemId }}, text:
+ {{ props.item.text }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/items/rendering/item-render/main.js b/vue-options-api-demos/layout/context-menu/items/rendering/item-render/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/rendering/item-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/items/rendering/item-render/main.vue b/vue-options-api-demos/layout/context-menu/items/rendering/item-render/main.vue
new file mode 100644
index 00000000..e9b63fdf
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/rendering/item-render/main.vue
@@ -0,0 +1,88 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+ itemId: {{ props.itemId }}, Custom text
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/items/rendering/link-render/main.js b/vue-options-api-demos/layout/context-menu/items/rendering/link-render/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/rendering/link-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/items/rendering/link-render/main.vue b/vue-options-api-demos/layout/context-menu/items/rendering/link-render/main.vue
new file mode 100644
index 00000000..fb6228e3
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/rendering/link-render/main.vue
@@ -0,0 +1,100 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+
+ {{ props.item.text }}
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/items/rendering/menu-item-render/main.js b/vue-options-api-demos/layout/context-menu/items/rendering/menu-item-render/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/rendering/menu-item-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/items/rendering/menu-item-render/main.vue b/vue-options-api-demos/layout/context-menu/items/rendering/menu-item-render/main.vue
new file mode 100644
index 00000000..650ed85c
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/rendering/menu-item-render/main.vue
@@ -0,0 +1,101 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+ itemId: {{ props.itemId }}, Custom text
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/items/rendering/menu-link-render/main.js b/vue-options-api-demos/layout/context-menu/items/rendering/menu-link-render/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/rendering/menu-link-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/items/rendering/menu-link-render/main.vue b/vue-options-api-demos/layout/context-menu/items/rendering/menu-link-render/main.vue
new file mode 100644
index 00000000..395c92ba
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/items/rendering/menu-link-render/main.vue
@@ -0,0 +1,99 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+
+ {{ props.item.text }}
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/open-close/main.js b/vue-options-api-demos/layout/context-menu/open-close/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/open-close/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/open-close/main.vue b/vue-options-api-demos/layout/context-menu/open-close/main.vue
new file mode 100644
index 00000000..33eef3a8
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/open-close/main.vue
@@ -0,0 +1,98 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/overview/main.js b/vue-options-api-demos/layout/context-menu/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/overview/main.vue b/vue-options-api-demos/layout/context-menu/overview/main.vue
new file mode 100644
index 00000000..673f72be
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/overview/main.vue
@@ -0,0 +1,93 @@
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/context-menu/vertical/main.js b/vue-options-api-demos/layout/context-menu/vertical/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/vertical/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/context-menu/vertical/main.vue b/vue-options-api-demos/layout/context-menu/vertical/main.vue
new file mode 100644
index 00000000..df067050
--- /dev/null
+++ b/vue-options-api-demos/layout/context-menu/vertical/main.vue
@@ -0,0 +1,110 @@
+
+
+
+ Select ContextMenu orientation:
+
+
+
+
Right click here to open Context menu
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/custom-render/Berlin.vue b/vue-options-api-demos/layout/drawer/custom-render/Berlin.vue
new file mode 100644
index 00000000..5816104e
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/custom-render/Berlin.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ 18ºC
+ Cloudy weather in Berlin
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/custom-render/Madrid.vue b/vue-options-api-demos/layout/drawer/custom-render/Madrid.vue
new file mode 100644
index 00000000..fb850c18
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/custom-render/Madrid.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ 31ºC
+ Sunny weather in Madrid
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/custom-render/Paris.vue b/vue-options-api-demos/layout/drawer/custom-render/Paris.vue
new file mode 100644
index 00000000..e2361df1
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/custom-render/Paris.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ 21ºC
+ Sunny weather in Paris
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/custom-render/Rome.vue b/vue-options-api-demos/layout/drawer/custom-render/Rome.vue
new file mode 100644
index 00000000..2d1dcb11
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/custom-render/Rome.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ 30ºC
+ Sunny weather in Rome
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/custom-render/index.js b/vue-options-api-demos/layout/drawer/custom-render/index.js
new file mode 100644
index 00000000..ba777b16
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/custom-render/index.js
@@ -0,0 +1,35 @@
+import { createWebHistory, createRouter } from "vue-router";
+import Paris from "./Paris";
+import Rome from "./Rome";
+import Berlin from "./Berlin";
+import Madrid from "./Madrid";
+
+const routes = [
+ {
+ path: "/layout/drawer/custom-render",
+ name: "Paris",
+ component: Paris
+ },
+ {
+ path: "/layout/drawer/custom-render/rome",
+ name: "Rome",
+ component: Rome
+ },
+ {
+ path: "/layout/drawer/custom-render/berlin",
+ name: "Berlin",
+ component: Berlin
+ },
+ {
+ path: "/layout/drawer/custom-render/madrid",
+ name: "Madrid",
+ component: Madrid
+ }
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes
+});
+
+export default router;
diff --git a/vue-options-api-demos/layout/drawer/custom-render/main.js b/vue-options-api-demos/layout/drawer/custom-render/main.js
new file mode 100644
index 00000000..e38732dc
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/custom-render/main.js
@@ -0,0 +1,6 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+import router from "./index.js";
+import "./styles.css";
+
+createApp(App).use(router).mount("#app");
diff --git a/vue-options-api-demos/layout/drawer/custom-render/main.vue b/vue-options-api-demos/layout/drawer/custom-render/main.vue
new file mode 100644
index 00000000..6f63b378
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/custom-render/main.vue
@@ -0,0 +1,125 @@
+
+
+
+
+ Weather Forecast in Europe
+
+
+
+
+
+
+
+
+
{{ props.text }}
+
Capital of {{ props.country }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/custom-render/styles.css b/vue-options-api-demos/layout/drawer/custom-render/styles.css
new file mode 100644
index 00000000..f824c50d
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/custom-render/styles.css
@@ -0,0 +1,50 @@
+my-app {
+ padding: 0 !important;
+}
+
+.k-drawer-content {
+ padding: 20px;
+}
+
+.k-drawer-container {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+}
+.k-drawer-item {
+ align-items: center;
+ user-select: none;
+}
+.weather {
+ margin: 0 auto 30px;
+ text-align: center;
+}
+.k-drawer-container .k-drawer-items .k-icon {
+ font-size: 20px;
+ margin-right: 16px;
+ height: 20px;
+}
+.custom-toolbar {
+ width: 100%;
+ background-color: #f6f6f6;
+ line-height: 10px;
+ border-bottom: inset;
+ border-bottom-width: 1px;
+ padding: 3px 8px;
+ color: #656565;
+}
+.title {
+ margin-left: 20px;
+ font-weight: bold;
+ font-size: 17px;
+}
+.item-descr {
+ margin-top: -5px;
+}
+.item-descr-wrap > span {
+ font-size: 70%;
+}
+.item-descr-wrap {
+ display: flex;
+ flex-direction: column;
+}
diff --git a/vue-options-api-demos/layout/drawer/display-modes/main.js b/vue-options-api-demos/layout/drawer/display-modes/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/display-modes/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/drawer/display-modes/main.vue b/vue-options-api-demos/layout/drawer/display-modes/main.vue
new file mode 100644
index 00000000..3798754d
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/display-modes/main.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/events/Logger.vue b/vue-options-api-demos/layout/drawer/events/Logger.vue
new file mode 100644
index 00000000..aec622fe
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/events/main.js b/vue-options-api-demos/layout/drawer/events/main.js
new file mode 100644
index 00000000..1f1c6c86
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/events/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
+
diff --git a/vue-options-api-demos/layout/drawer/events/main.vue b/vue-options-api-demos/layout/drawer/events/main.vue
new file mode 100644
index 00000000..7abe4a6b
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/events/main.vue
@@ -0,0 +1,96 @@
+
+
+
+
+ Drawer Events Demo
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/events/styles.css b/vue-options-api-demos/layout/drawer/events/styles.css
new file mode 100644
index 00000000..15b7dd98
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/events/styles.css
@@ -0,0 +1,47 @@
+my-app {
+ padding: 0 !important;
+ }
+
+ .k-drawer-container {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ }
+ .k-drawer-item {
+ user-select: none;
+ }
+ .k-icon {
+ font-size: 20px;
+ }
+ .custom-toolbar {
+ width: 100%;
+ background-color: #f6f6f6;
+ line-height: 10px;
+ border-bottom: inset;
+ border-bottom-width: 1px;
+ padding: 3px 8px;
+ color: #656565;
+ }
+ .mail-box {
+ margin-left: 20px;
+ font-weight: bold;
+ font-size: 17px;
+ }
+ .page ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ }
+ .page li {
+ font-size: 1.2em;
+ background: 0 0;
+ border-radius: 0;
+ border-width: 0 0 1px;
+ border-color: rgba(33, 37, 41, 0.125);
+ border-style: solid;
+ line-height: 1.5em;
+ padding: 1.09em 0.84em 1.23em 0.84em;
+ }
+ .page li:last-child {
+ border: 0;
+ }
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/drawer/expanded/main.js b/vue-options-api-demos/layout/drawer/expanded/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/expanded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/drawer/expanded/main.vue b/vue-options-api-demos/layout/drawer/expanded/main.vue
new file mode 100644
index 00000000..e79dd67d
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/expanded/main.vue
@@ -0,0 +1,74 @@
+
+
+
+
+ Toggle the drawer state
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/expanded/styles.css b/vue-options-api-demos/layout/drawer/expanded/styles.css
new file mode 100644
index 00000000..2c51ae54
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/expanded/styles.css
@@ -0,0 +1,13 @@
+my-app { padding: 0 !important; }
+
+.k-drawer-content {
+ padding: 20px;
+}
+.k-drawer-container {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+}
+.k-drawer-item {
+ user-select: none;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/drawer/getting-started/Attachments.vue b/vue-options-api-demos/layout/drawer/getting-started/Attachments.vue
new file mode 100644
index 00000000..c9e8420e
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/getting-started/Attachments.vue
@@ -0,0 +1,14 @@
+
+
+
+ Build enterprise apps
+ Fw: Regarding Multiline textbox
+ Away next week
+ Fw: Your Costume is ready
+ Update completed
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/drawer/getting-started/Calendar.vue b/vue-options-api-demos/layout/drawer/getting-started/Calendar.vue
new file mode 100644
index 00000000..eae206eb
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/getting-started/Calendar.vue
@@ -0,0 +1,17 @@
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/drawer/getting-started/Favourites.vue b/vue-options-api-demos/layout/drawer/getting-started/Favourites.vue
new file mode 100644
index 00000000..b602c3ec
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/getting-started/Favourites.vue
@@ -0,0 +1,12 @@
+
+
+
+ 70% Discount!
+ 90% Discount!
+ One time offer!
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/drawer/getting-started/Inbox.vue b/vue-options-api-demos/layout/drawer/getting-started/Inbox.vue
new file mode 100644
index 00000000..b49cf320
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/getting-started/Inbox.vue
@@ -0,0 +1,23 @@
+
+
+
+
+ Monday meeting
+
+ Hi Tom, Since Monday I'll be out of office, I'm rescheduling the
+ meeting for Tuesday.
+
+
+
+ I'm sorry, Tom
+
+ Hi Tom, my aunt comes for a visit this Saturday, so I can't come back
+ to St. Pete...
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/getting-started/Notifications.vue b/vue-options-api-demos/layout/drawer/getting-started/Notifications.vue
new file mode 100644
index 00000000..252acb15
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/getting-started/Notifications.vue
@@ -0,0 +1,14 @@
+
+
+
+ Monday meeting
+ Regarding org chart changes
+ Meeting with Cliff
+ Global Marketing Meeting
+ Out tonight with collegues?
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/drawer/getting-started/index.js b/vue-options-api-demos/layout/drawer/getting-started/index.js
new file mode 100644
index 00000000..f697d7fb
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/getting-started/index.js
@@ -0,0 +1,41 @@
+import { createWebHistory, createRouter } from "vue-router";
+import Inbox from "./Inbox";
+import Notifications from "./Notifications";
+import Attachments from "./Attachments";
+import Favourites from "./Favourites";
+import Calendar from "./Calendar";
+
+const routes = [
+ {
+ path: "/layout/drawer/overview/inbox",
+ name: "Inbox",
+ component: Inbox
+ },
+ {
+ path: "/layout/drawer/overview/notifications",
+ name: "Notifications",
+ component: Notifications
+ },
+ {
+ path: "/layout/drawer/overview/attachments",
+ name: "Attachments",
+ component: Attachments
+ },
+ {
+ path: "/layout/drawer/overview/favourites",
+ name: "Favourites",
+ component: Favourites
+ },
+ {
+ path: "/layout/drawer/overview/calendar",
+ name: "Calendar",
+ component: Calendar
+ }
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes
+});
+
+export default router;
diff --git a/vue-options-api-demos/layout/drawer/getting-started/main.js b/vue-options-api-demos/layout/drawer/getting-started/main.js
new file mode 100644
index 00000000..b51f2405
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/getting-started/main.js
@@ -0,0 +1,5 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+import router from "./index.js";
+
+createApp(App).use(router).mount("#app");
diff --git a/vue-options-api-demos/layout/drawer/getting-started/main.vue b/vue-options-api-demos/layout/drawer/getting-started/main.vue
new file mode 100644
index 00000000..a13d072d
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/getting-started/main.vue
@@ -0,0 +1,114 @@
+
+
+
+
+ Mail Box
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/getting-started/styles.css b/vue-options-api-demos/layout/drawer/getting-started/styles.css
new file mode 100644
index 00000000..e0cca405
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/getting-started/styles.css
@@ -0,0 +1,47 @@
+my-app {
+ padding: 0 !important;
+}
+
+.k-drawer-container {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+}
+.k-drawer-item {
+ user-select: none;
+}
+.k-icon {
+ font-size: 20px;
+}
+.custom-toolbar {
+ width: 100%;
+ background-color: #f6f6f6;
+ line-height: 10px;
+ border-bottom: inset;
+ border-bottom-width: 1px;
+ padding: 3px 8px;
+ color: #656565;
+}
+.mail-box {
+ margin-left: 20px;
+ font-weight: bold;
+ font-size: 17px;
+}
+.page ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+.page li {
+ font-size: 1.2em;
+ background: 0 0;
+ border-radius: 0;
+ border-width: 0 0 1px;
+ border-color: rgba(33, 37, 41, 0.125);
+ border-style: solid;
+ line-height: 1.5em;
+ padding: 1.09em 0.84em 1.23em 0.84em;
+}
+.page li:last-child {
+ border: 0;
+}
diff --git a/vue-options-api-demos/layout/drawer/hierarchical/Education.vue b/vue-options-api-demos/layout/drawer/hierarchical/Education.vue
new file mode 100644
index 00000000..2a8b12ec
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/hierarchical/Education.vue
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+
+ Vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5/5 (981)
+
+
+
+
+
+ If you're serious about learning Vue, there's no better place to
+ do it. This course includes all of the best practices and newest
+ APIs for building professional Vue apps in 2022.
+
+
+
+ Review
+
+
+
+
+
+
+
+
+
+ Advanced JS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4/5 (681)
+
+
+
+
+
+ If you use JavaScript in any capacity, there's probably not
+ another resource that will benefit you more than this course.
+ Closures, The 'this' keyword, module patterns and so much more.
+
+
+
+ Review
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/hierarchical/Europe.vue b/vue-options-api-demos/layout/drawer/hierarchical/Europe.vue
new file mode 100644
index 00000000..6fcef18a
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/hierarchical/Europe.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+ Amsterdam holiday
+
+
+
+
+
+
+
+ 4/5 (391)
+
+
+
+
+
+ Amsterdam is the perfect place for a great holiday, with its great
+ museums and galleries, lovely eateries, picturesque winding
+ streets and canals, and lively nightlife scene.
+
+
+
+ Review
+
+
+
+
+
+
+
+
+
+ Budapest holiday
+
+
+
+
+
+
+
+ 5/5 (1023)
+
+
+
+
+
+ Discover why Budapest has long been a much-loved destination. Take
+ an evening summer stroll along the banks of the Danube River, and
+ enjoy the view from Castle Hill.
+
+
+
+ Review
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/hierarchical/Food.vue b/vue-options-api-demos/layout/drawer/hierarchical/Food.vue
new file mode 100644
index 00000000..e25ca6c8
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/hierarchical/Food.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/hierarchical/ItalianFood.vue b/vue-options-api-demos/layout/drawer/hierarchical/ItalianFood.vue
new file mode 100644
index 00000000..daefd4dc
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/hierarchical/ItalianFood.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+ Pasta
+
+
+
+
+
+
+
+ 4/5 (681)
+
+
+
+
+
+ Pasta is a type of Italian food typically made from an unleavened
+ dough of durum wheat flour mixed with water or eggs, and formed
+ into sheets or various shapes, then cooked by boiling or baking.
+
+
+
+ Review
+
+
+
+
+
+
+
+
+
+ Pizza
+
+
+
+
+
+
+
+ 4/5 (681)
+
+
+
+
+
+ Though a slab of flat bread served with oil and spices was around
+ long before the unification Italy, there’s perhaps no dish that is
+ as common or as representative of the country as the humble pizza.
+
+
+
+ Review
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/hierarchical/JapaneseFood.vue b/vue-options-api-demos/layout/drawer/hierarchical/JapaneseFood.vue
new file mode 100644
index 00000000..de0d6ba3
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/hierarchical/JapaneseFood.vue
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+
+
+ Sushi
+
+
+
+
+
+
+
+ 5/5 (203)
+
+
+
+
+
+ Sushi is a Japanese dish of prepared vinegared rice,
+ accompanying with seafood, vegetables, and occasionally tropical
+ fruits.
+
+
+
+ Review
+
+
+
+
+
+
+
+
+
+ Ramen
+
+
+
+
+
+
+
+ 5/5 (653)
+
+
+
+
+
+ Ramen is a Japanese dish with a translation of "pulled noodles".
+ It consists of wheat noodles served in a meat or fish-based
+ broth.
+
+
+
+ Review
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/hierarchical/NorthAmerica.vue b/vue-options-api-demos/layout/drawer/hierarchical/NorthAmerica.vue
new file mode 100644
index 00000000..07821c64
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/hierarchical/NorthAmerica.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+ New York holiday
+
+
+
+
+
+
+
+ 4/5 (2523)
+
+
+
+
+
+ New York holidays are the ideal way to explore one of the most
+ iconic destinations. Offering both return flights and
+ accommodation, they offer great value and fantastic savings.
+
+
+
+ Review
+
+
+
+
+
+
+
+
+
+ Las Vegas holiday
+
+
+
+
+
+
+
+ 5/5 (357)
+
+
+
+
+
+ With its famous casinos, gourmet restaurants and glitzy shows, Las
+ Vegas is truly a must-see destination. Explore the famous hotels
+ and casinos that are home to the best restaurants and clubs.
+
+
+
+ Review
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/hierarchical/Travel.vue b/vue-options-api-demos/layout/drawer/hierarchical/Travel.vue
new file mode 100644
index 00000000..92dd85de
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/hierarchical/Travel.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/hierarchical/index.js b/vue-options-api-demos/layout/drawer/hierarchical/index.js
new file mode 100644
index 00000000..b50687fc
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/hierarchical/index.js
@@ -0,0 +1,73 @@
+import { createWebHistory, createRouter } from "vue-router";
+import Education from "./Education.vue";
+import Food from "./Food.vue";
+import JapaneseFood from "./JapaneseFood.vue";
+import ItalianFood from "./ItalianFood.vue";
+import Travel from "./Travel.vue";
+import Europe from "./Europe.vue";
+import NorthAmerica from "./NorthAmerica.vue";
+
+const routes = [
+ {
+ icon: "pencil",
+ id: 1,
+ path: "/layout/drawer/hierarchical/education",
+ name: "Education",
+ component: Education
+ },
+ {
+ separator: true
+ },
+ {
+ text: "Food",
+ id: 2,
+ path: "/layout/drawer/hierarchical/food",
+ ["data-expanded"]: true,
+ component: Food
+ },
+ {
+ text: "Japanese Food",
+ id: 4,
+ parentId: 2,
+ path: "/layout/drawer/hierarchical/food/japanese",
+ component: JapaneseFood
+ },
+ {
+ text: "Italian Food",
+ id: 5,
+ parentId: 2,
+ path: "/layout/drawer/hierarchical/food/italian",
+ component: ItalianFood
+ },
+ {
+ separator: true
+ },
+ {
+ text: "Travel",
+ ["data-expanded"]: true,
+ id: 3,
+ path: "/layout/drawer/hierarchical/travel",
+ component: Travel
+ },
+ {
+ text: "Europe",
+ id: 6,
+ parentId: 3,
+ path: "/layout/drawer/hierarchical/travel/europe",
+ component: Europe
+ },
+ {
+ text: "North America",
+ id: 7,
+ parentId: 3,
+ path: "/layout/drawer/hierarchical/travel/america",
+ component: NorthAmerica
+ }
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes
+});
+
+export default router;
diff --git a/vue-options-api-demos/layout/drawer/hierarchical/main.js b/vue-options-api-demos/layout/drawer/hierarchical/main.js
new file mode 100644
index 00000000..e38732dc
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/hierarchical/main.js
@@ -0,0 +1,6 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+import router from "./index.js";
+import "./styles.css";
+
+createApp(App).use(router).mount("#app");
diff --git a/vue-options-api-demos/layout/drawer/hierarchical/main.vue b/vue-options-api-demos/layout/drawer/hierarchical/main.vue
new file mode 100644
index 00000000..350ea00e
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/hierarchical/main.vue
@@ -0,0 +1,197 @@
+
+
+
+
+ Categories
+
+
+
+
+
+ {{ props.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/hierarchical/styles.css b/vue-options-api-demos/layout/drawer/hierarchical/styles.css
new file mode 100644
index 00000000..5d236ab0
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/hierarchical/styles.css
@@ -0,0 +1,52 @@
+my-app {
+ padding: 0 !important;
+}
+
+.k-drawer-content {
+ padding: 20px;
+}
+
+.k-drawer-container {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+}
+.k-drawer-item {
+ align-items: center;
+ user-select: none;
+}
+.weather-icon {
+ display: block;
+ margin: 30px auto 10px;
+ width: 128px;
+ height: 128px;
+}
+.k-drawer-container .k-drawer-items .k-icon {
+ font-size: 20px;
+ margin-right: 16px;
+ height: 20px;
+}
+.custom-toolbar {
+ width: 100%;
+ background-color: #f6f6f6;
+ line-height: 10px;
+ border-bottom: inset;
+ border-bottom-width: 1px;
+ padding: 3px 8px;
+ color: #656565;
+}
+.title {
+ margin-left: 20px;
+ font-weight: bold;
+ font-size: 17px;
+}
+.item-descr {
+ margin-top: -5px;
+}
+.item-descr-wrap > span {
+ font-size: 70%;
+}
+.item-descr-wrap {
+ display: flex;
+ flex-direction: column;
+}
diff --git a/vue-options-api-demos/layout/drawer/mini-mode/main.js b/vue-options-api-demos/layout/drawer/mini-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/mini-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/drawer/mini-mode/main.vue b/vue-options-api-demos/layout/drawer/mini-mode/main.vue
new file mode 100644
index 00000000..8e0ba99c
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/mini-mode/main.vue
@@ -0,0 +1,104 @@
+
+
+
+
+ Toggle the drawer state
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/positioning/main.js b/vue-options-api-demos/layout/drawer/positioning/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/positioning/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/drawer/positioning/main.vue b/vue-options-api-demos/layout/drawer/positioning/main.vue
new file mode 100644
index 00000000..cbfdb392
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/positioning/main.vue
@@ -0,0 +1,129 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/routing/About.vue b/vue-options-api-demos/layout/drawer/routing/About.vue
new file mode 100644
index 00000000..fc3752c7
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/routing/About.vue
@@ -0,0 +1,49 @@
+
+
+
About
+
+
+ So cuffed therefore by some sadistically mallard rewrote yet
+ accommodatingly more cat adequate pesky far this dear fitting and
+ groundhog horse some selfish jeepers juggled about since upheld heatedly
+ well much.
+
+
+ Therefore falcon usefully crab during onto hello regally rat wiped
+ misread reluctant unlike iguanodon fish far bald abjectly far chameleon
+ more scurrilous gagged virtuously sufficient arrogant cobra froze dog
+ waywardly staunch thus consoled.
+
+
+ Amphibious darn well densely far meanly inanimately incoherent away
+ flamingo outside yet jeez that yawned secret evasive dear overrode rat
+ cow one overpaid far hatchet much.
+
+
+ Had aerial well well coasted darn chuckled studied underlay fatally the
+ but among because patient or shook depending much sloth wetted cheered
+ some bee.
+
+
+ Bombastically yikes some coquettish erroneously in therefore
+ disgracefully glanced some connected and goodness more read marvelous up
+ one rebukingly darn fuzzily.
+
+
+ Meadowlark and hence regarding flaunting amongst steadfastly demurely
+ like far and stiffly bled reluctant alongside jeez this save opposite
+ well and this shuddered and smoked wherever condescendingly hey onto
+ much.
+
+
+ Hello gosh gosh up effortlessly valiant hotly less rubbed gerbil and
+ ouch inside fatuous suitably far fuzzily unihibitedly locked froze
+ timidly hello much revealed lorikeet lantern this much one and far
+ decidedly.
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/drawer/routing/Home.vue b/vue-options-api-demos/layout/drawer/routing/Home.vue
new file mode 100644
index 00000000..96a78ccc
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/routing/Home.vue
@@ -0,0 +1,45 @@
+
+
+
Home page
+
+
+ However engaging wherever growled much methodic shamefully more human
+ agreeable gracefully and less equitable insistent gasped that when wasp
+ baboon rebuilt more slept stingily along knew llama.
+
+
+ Prim crud far healthy wholesomely more far chortled ouch in adroitly
+ gawked affably reasonably manfully reindeer mysteriously overpaid
+ considering far far until.
+
+
+ Red-handed off thickly save aboard mawkishly that amidst moth pending
+ jerkily monogamous some much or creatively indecent neat far jeepers up
+ spoiled about.
+
+
+ Owing desperate like one shark or bit yikes up so thus grumbled gosh
+ more bawled much and regardless hey far bought through crud well
+ staunchly hysteric inside incorrect the closed.
+
+
+ Industrious jubilant blanched bestially yet that less far far a wow the
+ militant preparatory crudely acrimonious under a towards lemur wedded
+ that while decorously this peered darn a much.
+
+
+ Dizzy boundless hence but because moodily and alas a truculently less
+ hardheaded so on ambiguously incompetently less moaned hilarious until
+ one jeepers amid heinously.
+
+
+ Where beneath less misspelled across artistically spiteful jeepers much
+ more that when blushed a much a this groundhog therefore far arduous
+ dependent much satanic where dear goodness hummingbird.
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/routing/Products.vue b/vue-options-api-demos/layout/drawer/routing/Products.vue
new file mode 100644
index 00000000..8d4f3453
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/routing/Products.vue
@@ -0,0 +1,29 @@
+
+
+
Products
+
+
+ Inclusive and foolishly more on yikes far one vociferous squinted lied
+ much the howled disagreed yet seal needlessly vulgarly far moistly
+ wanton.
+
+
+ Human and some barring roadrunner behind swore hello ebulliently pending
+ less upon amiable less amiably dear harsh telepathic regarding hey
+ poignant ahead.
+
+
+ Immensely a that gosh accurately by naughtily patted laxly far pangolin
+ ouch this like marvelous bitter crab jeez after unobtrusive flamboyant
+ octopus.
+
+
+ So koala that ouch and much porpoise falcon from and wasp curtly crud
+ much more frequently and accidental beneath during far.
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/drawer/routing/index.js b/vue-options-api-demos/layout/drawer/routing/index.js
new file mode 100644
index 00000000..e298d8c5
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/routing/index.js
@@ -0,0 +1,29 @@
+import { createWebHistory, createRouter } from "vue-router";
+import Home from "./Home";
+import About from "./About";
+import Products from "./Products";
+
+const routes = [
+ {
+ path: "/layout/drawer/routing/home",
+ name: "Home",
+ component: Home
+ },
+ {
+ path: "/layout/drawer/routing/about",
+ name: "About",
+ component: About
+ },
+ {
+ path: "/layout/drawer/routing/products",
+ name: "Products",
+ component: Products
+ }
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes
+});
+
+export default router;
diff --git a/vue-options-api-demos/layout/drawer/routing/main.js b/vue-options-api-demos/layout/drawer/routing/main.js
new file mode 100644
index 00000000..e38732dc
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/routing/main.js
@@ -0,0 +1,6 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+import router from "./index.js";
+import "./styles.css";
+
+createApp(App).use(router).mount("#app");
diff --git a/vue-options-api-demos/layout/drawer/routing/main.vue b/vue-options-api-demos/layout/drawer/routing/main.vue
new file mode 100644
index 00000000..b79abbcf
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/routing/main.vue
@@ -0,0 +1,78 @@
+
+
+
+
+ Navigational drawer
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/routing/styles.css b/vue-options-api-demos/layout/drawer/routing/styles.css
new file mode 100644
index 00000000..b104f402
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/routing/styles.css
@@ -0,0 +1,35 @@
+my-app { padding: 0 !important; }
+
+.k-drawer-container {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+}
+.k-drawer-item {
+ user-select: none;
+}
+.k-icon {
+ font-size: 20px;
+}
+.title {
+ margin-left: 20px;
+ font-weight: bold;
+ font-size: 17px;
+}
+.custom-toolbar {
+ width: 100%;
+ background-color: #f6f6f6;
+ line-height: 10px;
+ border-bottom: inset;
+ border-bottom-width: 1px;
+ padding: 3px 8px;
+ color: #656565;
+}
+.k-drawer-container {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+}
+.k-drawer-content {
+ padding: 10px;
+}
diff --git a/vue-options-api-demos/layout/drawer/templates/content/index.js b/vue-options-api-demos/layout/drawer/templates/content/index.js
new file mode 100644
index 00000000..e69de29b
diff --git a/vue-options-api-demos/layout/drawer/templates/content/main.js b/vue-options-api-demos/layout/drawer/templates/content/main.js
new file mode 100644
index 00000000..0d438a73
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/templates/content/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+
+createApp(App).mount('#app');
diff --git a/vue-options-api-demos/layout/drawer/templates/content/main.vue b/vue-options-api-demos/layout/drawer/templates/content/main.vue
new file mode 100644
index 00000000..0a282722
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/templates/content/main.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+ First Name
+
+
+
+ Last Name
+
+
+
+ Submit
+
+
+
+
+
+
+
+
+ Toggle the drawer state
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/templates/header-footer/Attachments.vue b/vue-options-api-demos/layout/drawer/templates/header-footer/Attachments.vue
new file mode 100644
index 00000000..c9e8420e
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/templates/header-footer/Attachments.vue
@@ -0,0 +1,14 @@
+
+
+
+ Build enterprise apps
+ Fw: Regarding Multiline textbox
+ Away next week
+ Fw: Your Costume is ready
+ Update completed
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/drawer/templates/header-footer/Calendar.vue b/vue-options-api-demos/layout/drawer/templates/header-footer/Calendar.vue
new file mode 100644
index 00000000..eae206eb
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/templates/header-footer/Calendar.vue
@@ -0,0 +1,17 @@
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/drawer/templates/header-footer/Favourites.vue b/vue-options-api-demos/layout/drawer/templates/header-footer/Favourites.vue
new file mode 100644
index 00000000..b602c3ec
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/templates/header-footer/Favourites.vue
@@ -0,0 +1,12 @@
+
+
+
+ 70% Discount!
+ 90% Discount!
+ One time offer!
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/drawer/templates/header-footer/Inbox.vue b/vue-options-api-demos/layout/drawer/templates/header-footer/Inbox.vue
new file mode 100644
index 00000000..b49cf320
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/templates/header-footer/Inbox.vue
@@ -0,0 +1,23 @@
+
+
+
+
+ Monday meeting
+
+ Hi Tom, Since Monday I'll be out of office, I'm rescheduling the
+ meeting for Tuesday.
+
+
+
+ I'm sorry, Tom
+
+ Hi Tom, my aunt comes for a visit this Saturday, so I can't come back
+ to St. Pete...
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/templates/header-footer/Notifications.vue b/vue-options-api-demos/layout/drawer/templates/header-footer/Notifications.vue
new file mode 100644
index 00000000..abbe59cf
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/templates/header-footer/Notifications.vue
@@ -0,0 +1,14 @@
+
+
+
+ Monday meeting
+ Regarding org chart changes
+ Meeting with Cliff
+ Global Marketing Meeting
+ Out tonight with colleagues?
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/drawer/templates/header-footer/index.js b/vue-options-api-demos/layout/drawer/templates/header-footer/index.js
new file mode 100644
index 00000000..c8032481
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/templates/header-footer/index.js
@@ -0,0 +1,41 @@
+import { createWebHistory, createRouter } from "vue-router";
+import Inbox from "./Inbox";
+import Notifications from "./Notifications";
+import Attachments from "./Attachments";
+import Favourites from "./Favourites";
+import Calendar from "./Calendar";
+
+const routes = [
+ {
+ path: "/layout/drawer/templates/header-footer/inbox",
+ name: "Inbox",
+ component: Inbox
+ },
+ {
+ path: "/layout/drawer/templates/header-footer/notifications",
+ name: "Notifications",
+ component: Notifications
+ },
+ {
+ path: "/layout/drawer/templates/header-footer/attachments",
+ name: "Attachments",
+ component: Attachments
+ },
+ {
+ path: "/layout/drawer/templates/header-footer/favourites",
+ name: "Favourites",
+ component: Favourites
+ },
+ {
+ path: "/layout/drawer/templates/header-footer/calendar",
+ name: "Calendar",
+ component: Calendar
+ }
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes
+});
+
+export default router;
diff --git a/vue-options-api-demos/layout/drawer/templates/header-footer/main.js b/vue-options-api-demos/layout/drawer/templates/header-footer/main.js
new file mode 100644
index 00000000..b51f2405
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/templates/header-footer/main.js
@@ -0,0 +1,5 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+import router from "./index.js";
+
+createApp(App).use(router).mount("#app");
diff --git a/vue-options-api-demos/layout/drawer/templates/header-footer/main.vue b/vue-options-api-demos/layout/drawer/templates/header-footer/main.vue
new file mode 100644
index 00000000..2f7ee1ad
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/templates/header-footer/main.vue
@@ -0,0 +1,110 @@
+
+
+
+
+ Mail Box
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/drawer/templates/header-footer/styles.css b/vue-options-api-demos/layout/drawer/templates/header-footer/styles.css
new file mode 100644
index 00000000..5b9933b7
--- /dev/null
+++ b/vue-options-api-demos/layout/drawer/templates/header-footer/styles.css
@@ -0,0 +1,53 @@
+my-app {
+ padding: 0 !important;
+}
+
+.k-drawer-container {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+}
+.k-drawer-item {
+ user-select: none;
+}
+.k-icon {
+ font-size: 20px;
+}
+.custom-toolbar {
+ width: 100%;
+ background-color: #f6f6f6;
+ line-height: 10px;
+ border-bottom: inset;
+ border-bottom-width: 1px;
+ padding: 3px 8px;
+ color: #656565;
+}
+.mail-box {
+ margin-left: 20px;
+ font-weight: bold;
+ font-size: 17px;
+}
+.page ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+.page li {
+ font-size: 1.2em;
+ background: 0 0;
+ border-radius: 0;
+ border-width: 0 0 1px;
+ border-color: rgba(33, 37, 41, 0.125);
+ border-style: solid;
+ line-height: 1.5em;
+ padding: 1.09em 0.84em 1.23em 0.84em;
+}
+.page li:last-child {
+ border: 0;
+}
+.custom-header,
+.custom-footer {
+ padding: 8px 16px;
+ background-color: #f6f6f6;
+}
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/expansionpanel/animations/data.js b/vue-options-api-demos/layout/expansionpanel/animations/data.js
new file mode 100644
index 00000000..2c7cd0d0
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/animations/data.js
@@ -0,0 +1,38 @@
+const brazilImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/countries/brazil.jpg';
+const chileImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/countries/chile.jpg';
+const colombiaImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/countries/colombia.jpg';
+const ecuadorImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/countries/ecuador.jpg';
+const guyanaImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/countries/guyana.jpg';
+
+export const data = [{
+ id: 'Brazil',
+ country: 'Brazil',
+ continent: 'South America',
+ imageUrl: brazilImage,
+ text: 'The word “Brazil” likely comes from the Portuguese word for brazilwood, a tree that once grew plentifully along the Brazilian coast. In Portuguese, brazilwood is called pau-brasil, with the word brasil commonly given the etymology “red like an ember”, formed from brasa (“ember”) and the suffix -il (from -iculum or -ilium). As brazilwood produces a deep red dye, it was highly valued by the European textile industry and was the earliest commercially exploited product from Brazil. Throughout the 16th century, massive amounts of brazilwood were harvested by indigenous peoples (mostly Tupi) along the Brazilian coast, who sold the timber to European traders (mostly Portuguese, but also French) in return for assorted European consumer goods.'
+}, {
+ id: 'Chile',
+ country: 'Chile',
+ continent: 'South America',
+ imageUrl: chileImage,
+ text: `There are various theories about the origin of the word Chile. According to 17th-century Spanish chronicler Diego de Rosales, the Incas called the valley
+ of the Aconcagua Chili by corruption of the name of a Picunche tribal chief (cacique) called Tili, who ruled the area at the time of the Incan conquest in the 15th century. Another theory points to the similarity of the valley of the Aconcagua with that of the Casma Valley in Peru, where there was a town and valley named Chili.`
+}, {
+ id: 'Colombia',
+ country: 'Colombia',
+ continent: 'South America',
+ imageUrl: colombiaImage,
+ text: 'The name “Colombia” is derived from the last name of the Italian navigator Christopher Columbus. It was conceived by the Venezuelan revolutionary Francisco de Miranda as a reference to all of the New World, but especially to those portions under Spanish law. The name was later adopted by the Republic of Colombia of 1819, formed from the territories of the old Viceroyalty of New Granada (modern-day Colombia, Panama, Venezuela, Ecuador, and northwest Brazil).'
+}, {
+ id: 'Ecuador',
+ country: 'Ecuador',
+ continent: 'South America',
+ imageUrl: ecuadorImage,
+ text: 'The origin of the name of Ecuador is from Spain. When the Spaniards colonized the land they called it “el ecuador” which translated means “the equator”.'
+}, {
+ id: 'Guyana',
+ country: 'Guyana',
+ continent: 'South America',
+ imageUrl: guyanaImage,
+ text: 'The name “Guyana” derives from Guiana, the original name for the region that formerly included Guyana (British Guiana), Suriname (Dutch Guiana), French Guiana, and parts of Colombia, Venezuela and Brazil. According to the Oxford English Dictionary, “Guyana” comes from an indigenous Amerindian language and means “land of many waters”.'
+}];
diff --git a/vue-options-api-demos/layout/expansionpanel/animations/main.js b/vue-options-api-demos/layout/expansionpanel/animations/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/animations/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/expansionpanel/animations/main.vue b/vue-options-api-demos/layout/expansionpanel/animations/main.vue
new file mode 100644
index 00000000..53a4b1d4
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/animations/main.vue
@@ -0,0 +1,59 @@
+
+
+
+
handleAction(ev, panel.id)"
+ >
+
+
+
+
+
+
+
{{ panel.text }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/expansionpanel/animations/styles.css b/vue-options-api-demos/layout/expansionpanel/animations/styles.css
new file mode 100644
index 00000000..54592767
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/animations/styles.css
@@ -0,0 +1,27 @@
+.wrapper {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+
+.k-expander {
+ width: 600px;
+}
+
+.content {
+ display: flex;
+}
+
+.image-container {
+ height: 250px;
+ margin-right: 20px;
+}
+
+img {
+ height: 100%;
+}
+
+.content-text {
+ display: block;
+ text-align: justify;
+}
diff --git a/vue-options-api-demos/layout/expansionpanel/disabled/main.js b/vue-options-api-demos/layout/expansionpanel/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/expansionpanel/disabled/main.vue b/vue-options-api-demos/layout/expansionpanel/disabled/main.vue
new file mode 100644
index 00000000..e221df45
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/disabled/main.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+ There are various theories about the origin of the word Chile.
+ According to 17th-century Spanish chronicler Diego de Rosales, the
+ Incas called the valley of the Aconcagua Chili by corruption of the
+ name of a Picunche tribal chief (cacique) called Tili, who ruled the
+ area at the time of the Incan conquest in the 15th century. Another
+ theory points to the similarity of the valley of the Aconcagua with
+ that of the Casma Valley in Peru, where there was a town and valley
+ named Chili.
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/expansionpanel/events/Logger.vue b/vue-options-api-demos/layout/expansionpanel/events/Logger.vue
new file mode 100644
index 00000000..ae76e60a
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
{{ title }}
+
+ {{ events.length - idx }}. {{ event }}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/expansionpanel/events/data.js b/vue-options-api-demos/layout/expansionpanel/events/data.js
new file mode 100644
index 00000000..e375e7c2
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/events/data.js
@@ -0,0 +1,28 @@
+const brazilImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/countries/brazil.jpg';
+const chileImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/countries/chile.jpg';
+const colombiaImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/countries/colombia.jpg';
+
+export const data = [
+ {
+ id: 'Brazil',
+ country: 'Brazil',
+ continent: 'South America',
+ imageUrl: brazilImage,
+ text: 'The word “Brazil” likely comes from the Portuguese word for brazilwood, a tree that once grew plentifully along the Brazilian coast. In Portuguese, brazilwood is called pau-brasil, with the word brasil commonly given the etymology “red like an ember”, formed from brasa (“ember”) and the suffix -il (from -iculum or -ilium). As brazilwood produces a deep red dye, it was highly valued by the European textile industry and was the earliest commercially exploited product from Brazil. Throughout the 16th century, massive amounts of brazilwood were harvested by indigenous peoples (mostly Tupi) along the Brazilian coast, who sold the timber to European traders (mostly Portuguese, but also French) in return for assorted European consumer goods.',
+ },
+ {
+ id: 'Chile',
+ country: 'Chile',
+ continent: 'South America',
+ imageUrl: chileImage,
+ text: `There are various theories about the origin of the word Chile. According to 17th-century Spanish chronicler Diego de Rosales, the Incas called the valley
+ of the Aconcagua Chili by corruption of the name of a Picunche tribal chief (cacique) called Tili, who ruled the area at the time of the Incan conquest in the 15th century. Another theory points to the similarity of the valley of the Aconcagua with that of the Casma Valley in Peru, where there was a town and valley named Chili.`,
+ },
+ {
+ id: 'Colombia',
+ country: 'Colombia',
+ continent: 'South America',
+ imageUrl: colombiaImage,
+ text: 'The name “Colombia” is derived from the last name of the Italian navigator Christopher Columbus. It was conceived by the Venezuelan revolutionary Francisco de Miranda as a reference to all of the New World, but especially to those portions under Spanish law. The name was later adopted by the Republic of Colombia of 1819, formed from the territories of the old Viceroyalty of New Granada (modern-day Colombia, Panama, Venezuela, Ecuador, and northwest Brazil).',
+ },
+];
diff --git a/vue-options-api-demos/layout/expansionpanel/events/main.js b/vue-options-api-demos/layout/expansionpanel/events/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/expansionpanel/events/main.vue b/vue-options-api-demos/layout/expansionpanel/events/main.vue
new file mode 100644
index 00000000..e35854a4
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/events/main.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
handleAction(ev, panel.id)"
+ >
+
+
+
+
+
+
+
{{ panel.text }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/expansionpanel/events/styles.css b/vue-options-api-demos/layout/expansionpanel/events/styles.css
new file mode 100644
index 00000000..fef260d9
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/events/styles.css
@@ -0,0 +1,28 @@
+.wrapper {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ }
+
+ .k-expander {
+ width: 480px;
+ }
+
+ .content {
+ display: flex;
+ }
+
+ .image-container {
+ height: 250px;
+ margin-right: 20px;
+ }
+
+ img {
+ height: 100%;
+ }
+
+ .content-text {
+ display: block;
+ text-align: justify;
+ }
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/expansionpanel/icons/main.js b/vue-options-api-demos/layout/expansionpanel/icons/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/icons/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/expansionpanel/icons/main.vue b/vue-options-api-demos/layout/expansionpanel/icons/main.vue
new file mode 100644
index 00000000..cd15d50f
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/icons/main.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
Custom Kendo UI for Vue Icons
+
+
+
+ The name “Colombia” is derived from the last name of the Italian
+ navigator Christopher Columbus. It was conceived by the Venezuelan
+ revolutionary Francisco de Miranda as a reference to all of the
+ New World, but especially to those portions under Spanish law. The
+ name was later adopted by the Republic of Colombia of 1819, formed
+ from the territories of the old Viceroyalty of New Granada
+ (modern-day Colombia, Panama, Venezuela, Ecuador, and northwest
+ Brazil).
+
+
+
+
+
+
Custom Font Awesome Icons
+
+
+
+
+ The name “Colombia” is derived from the last name of the Italian
+ navigator Christopher Columbus. It was conceived by the Venezuelan
+ revolutionary Francisco de Miranda as a reference to all of the
+ New World, but especially to those portions under Spanish law. The
+ name was later adopted by the Republic of Colombia of 1819, formed
+ from the territories of the old Viceroyalty of New Granada
+ (modern-day Colombia, Panama, Venezuela, Ecuador, and northwest
+ Brazil).
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/expansionpanel/overview/data.js b/vue-options-api-demos/layout/expansionpanel/overview/data.js
new file mode 100644
index 00000000..2c7cd0d0
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/overview/data.js
@@ -0,0 +1,38 @@
+const brazilImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/countries/brazil.jpg';
+const chileImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/countries/chile.jpg';
+const colombiaImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/countries/colombia.jpg';
+const ecuadorImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/countries/ecuador.jpg';
+const guyanaImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/countries/guyana.jpg';
+
+export const data = [{
+ id: 'Brazil',
+ country: 'Brazil',
+ continent: 'South America',
+ imageUrl: brazilImage,
+ text: 'The word “Brazil” likely comes from the Portuguese word for brazilwood, a tree that once grew plentifully along the Brazilian coast. In Portuguese, brazilwood is called pau-brasil, with the word brasil commonly given the etymology “red like an ember”, formed from brasa (“ember”) and the suffix -il (from -iculum or -ilium). As brazilwood produces a deep red dye, it was highly valued by the European textile industry and was the earliest commercially exploited product from Brazil. Throughout the 16th century, massive amounts of brazilwood were harvested by indigenous peoples (mostly Tupi) along the Brazilian coast, who sold the timber to European traders (mostly Portuguese, but also French) in return for assorted European consumer goods.'
+}, {
+ id: 'Chile',
+ country: 'Chile',
+ continent: 'South America',
+ imageUrl: chileImage,
+ text: `There are various theories about the origin of the word Chile. According to 17th-century Spanish chronicler Diego de Rosales, the Incas called the valley
+ of the Aconcagua Chili by corruption of the name of a Picunche tribal chief (cacique) called Tili, who ruled the area at the time of the Incan conquest in the 15th century. Another theory points to the similarity of the valley of the Aconcagua with that of the Casma Valley in Peru, where there was a town and valley named Chili.`
+}, {
+ id: 'Colombia',
+ country: 'Colombia',
+ continent: 'South America',
+ imageUrl: colombiaImage,
+ text: 'The name “Colombia” is derived from the last name of the Italian navigator Christopher Columbus. It was conceived by the Venezuelan revolutionary Francisco de Miranda as a reference to all of the New World, but especially to those portions under Spanish law. The name was later adopted by the Republic of Colombia of 1819, formed from the territories of the old Viceroyalty of New Granada (modern-day Colombia, Panama, Venezuela, Ecuador, and northwest Brazil).'
+}, {
+ id: 'Ecuador',
+ country: 'Ecuador',
+ continent: 'South America',
+ imageUrl: ecuadorImage,
+ text: 'The origin of the name of Ecuador is from Spain. When the Spaniards colonized the land they called it “el ecuador” which translated means “the equator”.'
+}, {
+ id: 'Guyana',
+ country: 'Guyana',
+ continent: 'South America',
+ imageUrl: guyanaImage,
+ text: 'The name “Guyana” derives from Guiana, the original name for the region that formerly included Guyana (British Guiana), Suriname (Dutch Guiana), French Guiana, and parts of Colombia, Venezuela and Brazil. According to the Oxford English Dictionary, “Guyana” comes from an indigenous Amerindian language and means “land of many waters”.'
+}];
diff --git a/vue-options-api-demos/layout/expansionpanel/overview/main.js b/vue-options-api-demos/layout/expansionpanel/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/expansionpanel/overview/main.vue b/vue-options-api-demos/layout/expansionpanel/overview/main.vue
new file mode 100644
index 00000000..0f889cd6
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/overview/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
handleAction(ev, panel.id)"
+ >
+
+
+
+
+
+
+
{{ panel.text }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/expansionpanel/overview/styles.css b/vue-options-api-demos/layout/expansionpanel/overview/styles.css
new file mode 100644
index 00000000..54592767
--- /dev/null
+++ b/vue-options-api-demos/layout/expansionpanel/overview/styles.css
@@ -0,0 +1,27 @@
+.wrapper {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+
+.k-expander {
+ width: 600px;
+}
+
+.content {
+ display: flex;
+}
+
+.image-container {
+ height: 250px;
+ margin-right: 20px;
+}
+
+img {
+ height: 100%;
+}
+
+.content-text {
+ display: block;
+ text-align: justify;
+}
diff --git a/vue-options-api-demos/layout/get-started/main.js b/vue-options-api-demos/layout/get-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/get-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/get-started/main.vue b/vue-options-api-demos/layout/get-started/main.vue
new file mode 100644
index 00000000..3ca34e19
--- /dev/null
+++ b/vue-options-api-demos/layout/get-started/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+ A very demanding competition with more than 5000 participants.
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/globalization/AccountDetails.vue b/vue-options-api-demos/layout/globalization/AccountDetails.vue
new file mode 100644
index 00000000..6fa74202
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/AccountDetails.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/globalization/AvatarComponent.vue b/vue-options-api-demos/layout/globalization/AvatarComponent.vue
new file mode 100644
index 00000000..f6ce7c44
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/AvatarComponent.vue
@@ -0,0 +1,131 @@
+
+
+
Contacts
+
+
+
+
+ {{ contact.avatar }}
+
+
+
+ {{ contact.name }}
+
+
+ {{ contact.position }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ contact.name }}
+
+
+ {{ contact.position }}
+
+
+
+
+
+
+
+
+
+
+
Unknown
+
Not specified
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/globalization/CardComponent.vue b/vue-options-api-demos/layout/globalization/CardComponent.vue
new file mode 100644
index 00000000..a7b1ab18
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/CardComponent.vue
@@ -0,0 +1,60 @@
+
+
+
+
+ Barcelona
+
+
+
+ Barcelona, the cosmopolitan capital of Spain's Catalonia region, is
+ known for its art and architecture.
+
+
+ The fantastical Sagrada FamÃlia church and other modernist landmarks
+ designed by Antoni Gaudà dot the city.
+
+
+
+
+ Map
+
+
+ Weather
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/globalization/FormInput.vue b/vue-options-api-demos/layout/globalization/FormInput.vue
new file mode 100644
index 00000000..e9551d6f
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/FormInput.vue
@@ -0,0 +1,90 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/globalization/MenuComponent.vue b/vue-options-api-demos/layout/globalization/MenuComponent.vue
new file mode 100644
index 00000000..8d7af4b5
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/MenuComponent.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/globalization/PanelBarComponent.vue b/vue-options-api-demos/layout/globalization/PanelBarComponent.vue
new file mode 100644
index 00000000..6d19275d
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/PanelBarComponent.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/globalization/PersonalDetails.vue b/vue-options-api-demos/layout/globalization/PersonalDetails.vue
new file mode 100644
index 00000000..cb1ae7fd
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/PersonalDetails.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/globalization/RegisterComponent.vue b/vue-options-api-demos/layout/globalization/RegisterComponent.vue
new file mode 100644
index 00000000..a4f81426
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/RegisterComponent.vue
@@ -0,0 +1,14 @@
+
+
+ Click on the "Register" button to complete your registration.
+
+
+
diff --git a/vue-options-api-demos/layout/globalization/SplitterComponent.vue b/vue-options-api-demos/layout/globalization/SplitterComponent.vue
new file mode 100644
index 00000000..dd2306f9
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/SplitterComponent.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
Inner splitter / left pane
+
Resizable and collapsible.
+
+
+
+
+
Inner splitter / center pane
+
Resizable only.
+
+
+
+
+
Inner splitter / right pane
+
Resizable and collapsible.
+
+
+
+
+
+
+
Outer splitter / Middle pane
+
Resizable only.
+
+
+
+
+
Outer splitter / Middle pane
+
Resizable only.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/globalization/StepperComponent.vue b/vue-options-api-demos/layout/globalization/StepperComponent.vue
new file mode 100644
index 00000000..6bbe466c
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/StepperComponent.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/globalization/TabStripComponent.vue b/vue-options-api-demos/layout/globalization/TabStripComponent.vue
new file mode 100644
index 00000000..07a34d77
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/TabStripComponent.vue
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+
+
17ºC
+
Rainy weather in Paris.
+
+
City info
+
+ Paris is the capital and most populous city of France. It has an area
+ of 105 square kilometres (41 square miles) and a population in 2013 of
+ 2,229,621 within its administrative limits. The city is both a commune
+ and department, and forms the centre and headquarters of the
+ Île-de-France, or Paris Region, which has an area of 12,012 square
+ kilometres (4,638 square miles) and a population in 2014 of
+ 12,005,077, comprising 18.2 percent of the population of France.
+
+
+
+
+
+
+
+
+
+
29ºC
+
Sunny weather in New York.
+
+
City info
+
+ The City of New York, often called New York City or simply New York,
+ is the most populous city in the United States. With an estimated 2015
+ population of 8,550,405 distributed over a land area of just 305
+ square miles (790 km2), New York City is also the most densely
+ populated major city in the United States. Located at the southern tip
+ of the state of New York, the city is the center of the New York
+ metropolitan area, one of the most populous urban agglomerations in
+ the world.
+
+
+ A global power city, New York City exerts a significant impact upon
+ commerce, finance, media, art, fashion, research, technology,
+ education, and entertainment, its fast pace defining the term New York
+ minute. Home to the headquarters of the United Nations, New York is an
+ important center for international diplomacy and has been described as
+ the cultural and financial capital of the world.
+
+
+
+
+
+
+
+
+
+
21ºC
+
Sunny weather in Tallin.
+
+
City info
+
+ Tallinn is the capital and largest city of Estonia. It is situated on
+ the northern coast of the country, on the shore of the Gulf of
+ Finland, 80 km (50 mi) south of Helsinki, east of Stockholm and west
+ of Saint Petersburg. From the 13th century until 1918 (and briefly
+ during the Nazi occupation of Estonia from 1941 to 1944), the city was
+ known as Reval. Tallinn occupies an area of 159.2 km2 (61.5 sq mi) and
+ has a population of 443,894. Approximately 32% of Estonia's total
+ population lives in Tallinn.
+
+
+ Tallinn was founded in 1248, but the earliest human settlements are
+ over 5,000 years old, making it one of the oldest capital cities of
+ Northern Europe. Due to its strategic location, the city became a
+ major trade hub, especially from the 14th to the 16th century, when it
+ grew in importance as part of the Hanseatic League.
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/globalization/TileLayoutComponent.vue b/vue-options-api-demos/layout/globalization/TileLayoutComponent.vue
new file mode 100644
index 00000000..9de428f6
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/TileLayoutComponent.vue
@@ -0,0 +1,54 @@
+
+
+
+
+ Reorderable tile.
+
+
+ Reorderable tile.
+
+
+ Reorderable tile.
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/globalization/WizardComponent.vue b/vue-options-api-demos/layout/globalization/WizardComponent.vue
new file mode 100644
index 00000000..609c3b65
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/WizardComponent.vue
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Step {{ step + 1 }} of 3
+
+
+
+
+ Previous
+
+
+
+ {{ isLastStep ? 'Register' : 'Next' }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/globalization/content-overview.js b/vue-options-api-demos/layout/globalization/content-overview.js
new file mode 100644
index 00000000..53f848aa
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/content-overview.js
@@ -0,0 +1,3 @@
+const content = `
Kendo UI for Vue Native Editor allows your users to edit HTML in a familiar, user-friendly way. In this version, the Editor provides the core HTML editing engine, which includes basic text formatting, hyperlinks, lists, and image handling. The widget outputs identical HTML across all major browsers, follows accessibility standards and provides multiple tools for content manipulation.
Features include:
Text formatting & alignment
Bulleted and numbered lists
Hyperlink and image dialogs
Identical HTML output across modern browsers
Highly customizable tools
The Editor has a table option as well, allowing to add and edit tabular data.
Product Id
Product Name
Price
1
Chai
18
2
Chang
19
3
Aniseed Syrup
10
`;
+
+export default content;
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/globalization/index.js b/vue-options-api-demos/layout/globalization/index.js
new file mode 100644
index 00000000..d450baa2
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/index.js
@@ -0,0 +1,53 @@
+import { createWebHistory, createRouter } from 'vue-router';
+import Avatar from './AvatarComponent.vue';
+import Card from './CardComponent.vue';
+import Menu from './MenuComponent.vue';
+import Splitter from './SplitterComponent.vue';
+import PanelBar from './PanelBarComponent.vue';
+import TabStrip from './TabStripComponent.vue';
+import TileLayout from './TileLayoutComponent.vue';
+
+const routes = [
+ {
+ path: '/layout/globalization/avatar',
+ name: 'Avatar',
+ component: Avatar,
+ },
+ {
+ path: '/layout/globalization/card',
+ name: 'Card',
+ component: Card,
+ },
+ {
+ path: '/layout/globalization/menu',
+ name: 'Menu',
+ component: Menu,
+ },
+ {
+ path: '/layout/globalization/panelbar',
+ name: 'PanelBar',
+ component: PanelBar,
+ },
+ {
+ path: '/layout/globalization/splitter',
+ name: 'Splitter',
+ component: Splitter,
+ },
+ {
+ path: '/layout/globalization/tabstrip',
+ name: 'TabStrip',
+ component: TabStrip,
+ },
+ {
+ path: '/layout/globalization/tilelayout',
+ name: 'TileLayout',
+ component: TileLayout,
+ },
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes,
+});
+
+export default router;
diff --git a/vue-options-api-demos/layout/globalization/main.js b/vue-options-api-demos/layout/globalization/main.js
new file mode 100644
index 00000000..b51f2405
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/main.js
@@ -0,0 +1,5 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+import router from "./index.js";
+
+createApp(App).use(router).mount("#app");
diff --git a/vue-options-api-demos/layout/globalization/main.vue b/vue-options-api-demos/layout/globalization/main.vue
new file mode 100644
index 00000000..5ad594f9
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/main.vue
@@ -0,0 +1,159 @@
+
+
+
+
+
+ AppBar component from which the Drawer Component is controlled
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/globalization/panelbar-styles.css b/vue-options-api-demos/layout/globalization/panelbar-styles.css
new file mode 100644
index 00000000..34a35a5e
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/panelbar-styles.css
@@ -0,0 +1,35 @@
+.teamMate:after {
+ content: ".";
+ display: block;
+ height: 0;
+ line-height: 0;
+ clear: both;
+ visibility: hidden;
+}
+.teamMate h2 {
+ font-size: 1.3em;
+ font-weight: normal;
+ padding-top: 17px;
+ margin: 0;
+}
+.teamMate p {
+ margin: 0;
+ font-size: .8em;
+}
+.teamMate img {
+ display: inline-block;
+ vertical-align: top;
+ width: 50px;
+ height: 50px;
+ margin: 10px;
+ border: 1px solid #ccc;
+ border-radius: 50%;
+}
+.mate-info {
+ display: inline-block;
+ vertical-align: top;
+}
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/globalization/splitter-styles.css b/vue-options-api-demos/layout/globalization/splitter-styles.css
new file mode 100644
index 00000000..31339449
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/splitter-styles.css
@@ -0,0 +1,14 @@
+.pane-content {
+ padding: 0 10px;
+}
+
+h3 {
+ font-size: 1.2em;
+ margin: 10px 0;
+ padding: 0;
+}
+
+p {
+ margin: 0;
+ padding: 0;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/globalization/styles.css b/vue-options-api-demos/layout/globalization/styles.css
new file mode 100644
index 00000000..4dd5f55c
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/styles.css
@@ -0,0 +1,59 @@
+my-app {
+ padding: 0 !important;
+}
+
+.k-drawer-container > .k-drawer-content > .content {
+ padding: 40px 20px;
+}
+
+.k-drawer-container {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+}
+
+.k-drawer-item {
+ user-select: none;
+}
+
+.k-icon {
+ font-size: 20px;
+}
+
+.custom-toolbar {
+ display: flex;
+ width: 100%;
+ background-color: #f6f6f6;
+ line-height: 10px;
+ border-bottom: inset;
+ border-bottom-width: 1px;
+ padding: 8px 6px;
+ color: #000000;
+}
+
+.mail-box {
+ margin-left: 20px;
+ font-weight: bold;
+ font-size: 17px;
+}
+
+.page ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.page li {
+ font-size: 1.2em;
+ background: 0 0;
+ border-radius: 0;
+ border-width: 0 0 1px;
+ border-color: rgba(33, 37, 41, 0.125);
+ border-style: solid;
+ line-height: 1.5em;
+ padding: 1.09em 0.84em 1.23em 0.84em;
+}
+
+.page li:last-child {
+ border: 0;
+}
diff --git a/vue-options-api-demos/layout/globalization/validators.js b/vue-options-api-demos/layout/globalization/validators.js
new file mode 100644
index 00000000..b1fa8aa6
--- /dev/null
+++ b/vue-options-api-demos/layout/globalization/validators.js
@@ -0,0 +1,83 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = (value) =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = (value) =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = (value) =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = (value) =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = (value) =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = (value) =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = (value) =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = (value) =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = (value) =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = (value) =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = (value) => (value ? '' : 'Color is required.');
+export const requiredValidator = (value) =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = (value) =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = (value) =>
+ value ? '' : 'Address is required.';
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = (values) => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.',
+ };
+};
diff --git a/vue-options-api-demos/layout/gridlayout/items/main.js b/vue-options-api-demos/layout/gridlayout/items/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/items/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/gridlayout/items/main.vue b/vue-options-api-demos/layout/gridlayout/items/main.vue
new file mode 100644
index 00000000..2021285a
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/items/main.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/gridlayout/items/styles.css b/vue-options-api-demos/layout/gridlayout/items/styles.css
new file mode 100644
index 00000000..13212c38
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/items/styles.css
@@ -0,0 +1,26 @@
+.example-wrapper {
+ width: 300px;
+ margin: 0 auto;
+ box-shadow: 0px 10px 20px #00000029;
+ border-radius: 30px;
+ }
+ .page {
+ padding: 20px 10px;
+ }
+ .content {
+ background: #f9f9f9;
+ height: 470px;
+ overflow: auto;
+ }
+ .box {
+ padding: 4px;
+ background-color: #87dfce;
+ height: 100%;
+ }
+ .big {
+ background-color: #fea69c;
+ }
+ .rect {
+ background-color: #fee47c;
+ }
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/gridlayout/layout/gaps/main.js b/vue-options-api-demos/layout/gridlayout/layout/gaps/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/layout/gaps/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/gridlayout/layout/gaps/main.vue b/vue-options-api-demos/layout/gridlayout/layout/gaps/main.vue
new file mode 100644
index 00000000..4b87432e
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/layout/gaps/main.vue
@@ -0,0 +1,114 @@
+
+
+
+
diff --git a/vue-options-api-demos/layout/gridlayout/layout/gaps/styles.css b/vue-options-api-demos/layout/gridlayout/layout/gaps/styles.css
new file mode 100644
index 00000000..b0e7e229
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/layout/gaps/styles.css
@@ -0,0 +1,44 @@
+.example-wrapper {
+ width: 300px;
+ margin: 0 auto;
+ box-shadow: 0px 10px 20px #00000029;
+ border-radius: 30px;
+ }
+ .page {
+ padding: 20px 10px;
+ }
+ .content {
+ background: #f9f9f9;
+ height: 470px;
+ overflow: auto;
+ }
+ .box {
+ padding: 4px;
+ height: 100%;
+ }
+ .box-0,
+ .box-5,
+ .box-10 {
+ background-color: #89c0dd;
+ }
+ .box-1,
+ .box-6,
+ .box-11 {
+ background-color: #85d9b0;
+ }
+ .box-2,
+ .box-7,
+ .box-12 {
+ background-color: #f2ab7e;
+ }
+ .box-3,
+ .box-8,
+ .box-13 {
+ background-color: #fee47c;
+ }
+ .box-4,
+ .box-9,
+ .box-14 {
+ background-color: #fea69c;
+ }
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/gridlayout/layout/horizontalalign/main.js b/vue-options-api-demos/layout/gridlayout/layout/horizontalalign/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/layout/horizontalalign/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/gridlayout/layout/horizontalalign/main.vue b/vue-options-api-demos/layout/gridlayout/layout/horizontalalign/main.vue
new file mode 100644
index 00000000..7aaf92fd
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/layout/horizontalalign/main.vue
@@ -0,0 +1,91 @@
+
+
+
+
diff --git a/vue-options-api-demos/layout/gridlayout/layout/horizontalalign/styles.css b/vue-options-api-demos/layout/gridlayout/layout/horizontalalign/styles.css
new file mode 100644
index 00000000..b0e7e229
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/layout/horizontalalign/styles.css
@@ -0,0 +1,44 @@
+.example-wrapper {
+ width: 300px;
+ margin: 0 auto;
+ box-shadow: 0px 10px 20px #00000029;
+ border-radius: 30px;
+ }
+ .page {
+ padding: 20px 10px;
+ }
+ .content {
+ background: #f9f9f9;
+ height: 470px;
+ overflow: auto;
+ }
+ .box {
+ padding: 4px;
+ height: 100%;
+ }
+ .box-0,
+ .box-5,
+ .box-10 {
+ background-color: #89c0dd;
+ }
+ .box-1,
+ .box-6,
+ .box-11 {
+ background-color: #85d9b0;
+ }
+ .box-2,
+ .box-7,
+ .box-12 {
+ background-color: #f2ab7e;
+ }
+ .box-3,
+ .box-8,
+ .box-13 {
+ background-color: #fee47c;
+ }
+ .box-4,
+ .box-9,
+ .box-14 {
+ background-color: #fea69c;
+ }
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/gridlayout/layout/rows-cols/main.js b/vue-options-api-demos/layout/gridlayout/layout/rows-cols/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/layout/rows-cols/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/gridlayout/layout/rows-cols/main.vue b/vue-options-api-demos/layout/gridlayout/layout/rows-cols/main.vue
new file mode 100644
index 00000000..a92a8683
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/layout/rows-cols/main.vue
@@ -0,0 +1,122 @@
+
+
+
+
diff --git a/vue-options-api-demos/layout/gridlayout/layout/rows-cols/styles.css b/vue-options-api-demos/layout/gridlayout/layout/rows-cols/styles.css
new file mode 100644
index 00000000..b0e7e229
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/layout/rows-cols/styles.css
@@ -0,0 +1,44 @@
+.example-wrapper {
+ width: 300px;
+ margin: 0 auto;
+ box-shadow: 0px 10px 20px #00000029;
+ border-radius: 30px;
+ }
+ .page {
+ padding: 20px 10px;
+ }
+ .content {
+ background: #f9f9f9;
+ height: 470px;
+ overflow: auto;
+ }
+ .box {
+ padding: 4px;
+ height: 100%;
+ }
+ .box-0,
+ .box-5,
+ .box-10 {
+ background-color: #89c0dd;
+ }
+ .box-1,
+ .box-6,
+ .box-11 {
+ background-color: #85d9b0;
+ }
+ .box-2,
+ .box-7,
+ .box-12 {
+ background-color: #f2ab7e;
+ }
+ .box-3,
+ .box-8,
+ .box-13 {
+ background-color: #fee47c;
+ }
+ .box-4,
+ .box-9,
+ .box-14 {
+ background-color: #fea69c;
+ }
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/gridlayout/layout/verticalalign/main.js b/vue-options-api-demos/layout/gridlayout/layout/verticalalign/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/layout/verticalalign/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/gridlayout/layout/verticalalign/main.vue b/vue-options-api-demos/layout/gridlayout/layout/verticalalign/main.vue
new file mode 100644
index 00000000..ea4e6066
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/layout/verticalalign/main.vue
@@ -0,0 +1,91 @@
+
+
+
+
diff --git a/vue-options-api-demos/layout/gridlayout/layout/verticalalign/styles.css b/vue-options-api-demos/layout/gridlayout/layout/verticalalign/styles.css
new file mode 100644
index 00000000..b0e7e229
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/layout/verticalalign/styles.css
@@ -0,0 +1,44 @@
+.example-wrapper {
+ width: 300px;
+ margin: 0 auto;
+ box-shadow: 0px 10px 20px #00000029;
+ border-radius: 30px;
+ }
+ .page {
+ padding: 20px 10px;
+ }
+ .content {
+ background: #f9f9f9;
+ height: 470px;
+ overflow: auto;
+ }
+ .box {
+ padding: 4px;
+ height: 100%;
+ }
+ .box-0,
+ .box-5,
+ .box-10 {
+ background-color: #89c0dd;
+ }
+ .box-1,
+ .box-6,
+ .box-11 {
+ background-color: #85d9b0;
+ }
+ .box-2,
+ .box-7,
+ .box-12 {
+ background-color: #f2ab7e;
+ }
+ .box-3,
+ .box-8,
+ .box-13 {
+ background-color: #fee47c;
+ }
+ .box-4,
+ .box-9,
+ .box-14 {
+ background-color: #fea69c;
+ }
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/gridlayout/overview/RecommendedArticle.vue b/vue-options-api-demos/layout/gridlayout/overview/RecommendedArticle.vue
new file mode 100644
index 00000000..e71fbea9
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/overview/RecommendedArticle.vue
@@ -0,0 +1,51 @@
+
+
+
+
{{ article.author }}
+
{{
+ article.title
+ }}
+
{{ article.subtitle }}
+
+
{{ formattedDate }}
+
|
+
{{ article.minsLength }} min read
+
+
+
+
+
+ {{ article.imageText }}
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/gridlayout/overview/TrendingArticle.vue b/vue-options-api-demos/layout/gridlayout/overview/TrendingArticle.vue
new file mode 100644
index 00000000..34805c1b
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/overview/TrendingArticle.vue
@@ -0,0 +1,36 @@
+
+
+
+ 0{{ position }}
+
+
+
{{ article.author }}
+
{{ article.title }}
+
+
{{ formattedDate }}
+
|
+
{{ article.minsLength }} min read
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/gridlayout/overview/articles-info.js b/vue-options-api-demos/layout/gridlayout/overview/articles-info.js
new file mode 100644
index 00000000..2e56c8db
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/overview/articles-info.js
@@ -0,0 +1,84 @@
+const tags = [
+ { name: 'Art' },
+ { name: 'Books' },
+ { name: 'Film' },
+ { name: 'Gaming' },
+ { name: 'Music' },
+ { name: 'Photography' },
+ { name: 'Podcasts' },
+ { name: 'TV' },
+ { name: 'Visual Design' }
+];
+const articles = [
+ {
+ author: 'Camille Fournier',
+ title: 'An incomplete list of skills senior engineers need',
+ minsLength: 4,
+ date: new Date()
+ },
+ {
+ author: 'Mathew MacDonald',
+ title: 'A Closer Look at 5 New Features in C# 10',
+ minsLength: 6,
+ date: new Date()
+ },
+ {
+ author: 'Camille Fournier',
+ title: '20 Necessary Requirements of a Perfect Laptop',
+ minsLength: 4,
+ date: new Date()
+ },
+ {
+ author: 'Anton Subbotin',
+ title: 'Top 3 Coding Teachers',
+ minsLength: 5,
+ date: new Date()
+ },
+ {
+ author: 'Umair Haque',
+ title: 'Welcome to a New Dark Age',
+ minsLength: 9,
+ date: new Date()
+ },
+ {
+ author: 'Jean Campbell',
+ title: 'An Open Letter to Millennials',
+ minsLength: 7,
+ date: new Date()
+ }
+ ];
+
+const machineImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/gridlayout/machine-learning.jpg';
+const climateImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/gridlayout/climate.jpg';
+const booksImage = (import.meta.env.VITE_VUE_DEMOS_BASE_URL || '/') + 'assets/layout/gridlayout/books.jpg';
+
+const recommendedArticles = [
+ {
+ author: 'Andreas Maier',
+ title:
+ 'Pattern Recognition and the Fundamental Methods of Machine Learning',
+ subtitle: 'A Comprehensive Overview of Classical ML Methods',
+ minsLength: 7,
+ imagePath: machineImage,
+ imageText: 'Photo by Nathan Van Egmond on Unsplash',
+ date: new Date()
+ },
+ {
+ author: 'Whet Moser',
+ title: 'Our Climate Change Future Looks Like the Everglades',
+ subtitle: 'We are all Florida man.',
+ minsLength: 6,
+ imagePath: climateImage,
+ date: new Date()
+ },
+ {
+ author: 'Ali Tamaseb',
+ title: 'What I Learned About Startups by Collecting 30,000 Data Points',
+ subtitle: 'I spend 4 years conducting one of the largest studies.',
+ minsLength: 8,
+ imagePath: booksImage,
+ imageText: 'Photo by Firmbee.com on Unsplash',
+ date: new Date()
+ }
+];
+export { tags, articles, recommendedArticles };
diff --git a/vue-options-api-demos/layout/gridlayout/overview/main.js b/vue-options-api-demos/layout/gridlayout/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/gridlayout/overview/main.vue b/vue-options-api-demos/layout/gridlayout/overview/main.vue
new file mode 100644
index 00000000..358a1be1
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/overview/main.vue
@@ -0,0 +1,131 @@
+
+
+
+
+
+ Trending articles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Recommended for you
+
+
+
+
+
+
+
+ Events this month
+
+
+
+
+
+
+
+ Discover more
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/gridlayout/overview/styles.css b/vue-options-api-demos/layout/gridlayout/overview/styles.css
new file mode 100644
index 00000000..aa69aafa
--- /dev/null
+++ b/vue-options-api-demos/layout/gridlayout/overview/styles.css
@@ -0,0 +1,83 @@
+.grid-layout-container { overflow-x: auto; }
+
+.k-grid-layout {
+ width: 870px;
+ margin: auto;
+}
+
+.article, .card-article {
+ gap: 16px;
+ color: #656565;
+}
+
+.card-article {
+ padding: 16px;
+ margin-bottom: 8px;
+ border: 1px solid rgba(0, 0, 0, 0.08);
+ border-radius: 3px;
+}
+
+.article-description { gap: 6px; }
+
+.article-description .date,
+.card-article-description .date {
+ font-size: 10px;
+ line-height: 20px;
+}
+
+.article-description .separator,
+.card-article-description .separator {
+ padding: 0 5px;
+}
+
+.article-position { font-size: 32px; }
+
+.article-description .title {
+ font-size: 14px;
+ line-height: 20px;
+}
+
+.article-description .author {
+ font-size: 12px;
+ line-height: 20px;
+}
+
+.card-article-description .title {
+ font-size: 18px;
+ line-height: 24px;
+}
+
+.card-article-description .sub-title {
+ font-size: 14px;
+ line-height: 24px;
+}
+
+.card-article-description .author {
+ font-size: 14px;
+ line-height: 20px;
+ padding-bottom: 4px;
+}
+
+.k-card-horizontal .k-card-image.card-article-image {
+ max-width: 225px;
+}
+
+.card-article .photo-text {
+ text-align: right;
+ font-style: italic;
+ font-size: 10px;
+ opacity: 0.7;
+}
+
+.k-chip-list {
+ padding: 5px 0px;
+ grid-gap: 6px;
+ margin-top: 8px;
+}
+
+.k-chip {
+ margin: 0px;
+ border-radius: 2px;
+}
+
+.event-calendar { width: 100%; }
diff --git a/vue-options-api-demos/layout/menu/data-binding/local/main.js b/vue-options-api-demos/layout/menu/data-binding/local/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/data-binding/local/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/data-binding/local/main.vue b/vue-options-api-demos/layout/menu/data-binding/local/main.vue
new file mode 100644
index 00000000..dec63ebd
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/data-binding/local/main.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/data-binding/remote/main.js b/vue-options-api-demos/layout/menu/data-binding/remote/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/data-binding/remote/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/data-binding/remote/main.vue b/vue-options-api-demos/layout/menu/data-binding/remote/main.vue
new file mode 100644
index 00000000..88e6cd5b
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/data-binding/remote/main.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/events/Logger.vue b/vue-options-api-demos/layout/menu/events/Logger.vue
new file mode 100644
index 00000000..aec622fe
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/events/main.js b/vue-options-api-demos/layout/menu/events/main.js
new file mode 100644
index 00000000..1f1c6c86
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/events/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
+
diff --git a/vue-options-api-demos/layout/menu/events/main.vue b/vue-options-api-demos/layout/menu/events/main.vue
new file mode 100644
index 00000000..ccf0f910
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/events/main.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/items/properties/disabled/main.js b/vue-options-api-demos/layout/menu/items/properties/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/properties/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/items/properties/disabled/main.vue b/vue-options-api-demos/layout/menu/items/properties/disabled/main.vue
new file mode 100644
index 00000000..af669f1d
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/properties/disabled/main.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/menu/items/properties/icon/main.js b/vue-options-api-demos/layout/menu/items/properties/icon/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/properties/icon/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/items/properties/icon/main.vue b/vue-options-api-demos/layout/menu/items/properties/icon/main.vue
new file mode 100644
index 00000000..ecb747ba
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/properties/icon/main.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/items/properties/separator/main.js b/vue-options-api-demos/layout/menu/items/properties/separator/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/properties/separator/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/items/properties/separator/main.vue b/vue-options-api-demos/layout/menu/items/properties/separator/main.vue
new file mode 100644
index 00000000..f8ff79ea
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/properties/separator/main.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/items/properties/styles/main.js b/vue-options-api-demos/layout/menu/items/properties/styles/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/properties/styles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/items/properties/styles/main.vue b/vue-options-api-demos/layout/menu/items/properties/styles/main.vue
new file mode 100644
index 00000000..c0d52194
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/properties/styles/main.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/menu/items/properties/styles/styles.css b/vue-options-api-demos/layout/menu/items/properties/styles/styles.css
new file mode 100644
index 00000000..ca2eeaf5
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/properties/styles/styles.css
@@ -0,0 +1,3 @@
+.active {
+ box-shadow: inset 0 0 3px 1px #ff6358;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/menu/items/properties/text/main.js b/vue-options-api-demos/layout/menu/items/properties/text/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/properties/text/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/items/properties/text/main.vue b/vue-options-api-demos/layout/menu/items/properties/text/main.vue
new file mode 100644
index 00000000..fd4e4f44
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/properties/text/main.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/menu/items/properties/url/main.js b/vue-options-api-demos/layout/menu/items/properties/url/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/properties/url/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/items/properties/url/main.vue b/vue-options-api-demos/layout/menu/items/properties/url/main.vue
new file mode 100644
index 00000000..6ba2ff51
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/properties/url/main.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/menu/items/rendering/content-render-with-popup/items.json b/vue-options-api-demos/layout/menu/items/rendering/content-render-with-popup/items.json
new file mode 100644
index 00000000..8b372d28
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/rendering/content-render-with-popup/items.json
@@ -0,0 +1,16 @@
+[{
+ "text": "Order ID", "items": [
+ { "text": "Filter", "icon": "filter-sm" },
+ { "text": "Sort Ascending", "icon": "sort-asc-sm" },
+ { "text": "Sort Descending", "icon": "sort-desc-sm" }]
+}, {
+ "text": "Ship Country", "items": [
+ { "text": "Filter", "icon": "filter-sm" },
+ { "text": "Sort Ascending", "icon": "sort-asc-sm" },
+ { "text": "Sort Descending", "icon": "sort-desc-sm" }]
+}, {
+ "text": "Ship Address", "items": [
+ { "text": "Filter", "icon": "filter-sm" },
+ { "text": "Sort Ascending", "icon": "sort-asc-sm" },
+ { "text": "Sort Descending", "icon": "sort-desc-sm" }]
+}]
diff --git a/vue-options-api-demos/layout/menu/items/rendering/content-render-with-popup/main.js b/vue-options-api-demos/layout/menu/items/rendering/content-render-with-popup/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/rendering/content-render-with-popup/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/items/rendering/content-render-with-popup/main.vue b/vue-options-api-demos/layout/menu/items/rendering/content-render-with-popup/main.vue
new file mode 100644
index 00000000..3bfe24d8
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/rendering/content-render-with-popup/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+ `itemId: ${props.itemId}, text: ${props.item.text}`;
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/items/rendering/content-render/main.js b/vue-options-api-demos/layout/menu/items/rendering/content-render/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/rendering/content-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/items/rendering/content-render/main.vue b/vue-options-api-demos/layout/menu/items/rendering/content-render/main.vue
new file mode 100644
index 00000000..84f04d65
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/rendering/content-render/main.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ Custom content for itemId: {{props.itemId}}, text: {{props.item.text}}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/items/rendering/item-render/main.js b/vue-options-api-demos/layout/menu/items/rendering/item-render/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/rendering/item-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/items/rendering/item-render/main.vue b/vue-options-api-demos/layout/menu/items/rendering/item-render/main.vue
new file mode 100644
index 00000000..e278cec9
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/rendering/item-render/main.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+ itemId: {{ props.itemId }}, Custom text
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/items/rendering/link-render/main.js b/vue-options-api-demos/layout/menu/items/rendering/link-render/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/rendering/link-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/items/rendering/link-render/main.vue b/vue-options-api-demos/layout/menu/items/rendering/link-render/main.vue
new file mode 100644
index 00000000..7f828353
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/rendering/link-render/main.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+ {{ props.item.text }}
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/items/rendering/menu-item-render/main.js b/vue-options-api-demos/layout/menu/items/rendering/menu-item-render/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/rendering/menu-item-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/items/rendering/menu-item-render/main.vue b/vue-options-api-demos/layout/menu/items/rendering/menu-item-render/main.vue
new file mode 100644
index 00000000..8527476e
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/rendering/menu-item-render/main.vue
@@ -0,0 +1,54 @@
+
+
+
+
+ itemId: {{ props.itemId }}, Custom text
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/items/rendering/menu-link-render/main.js b/vue-options-api-demos/layout/menu/items/rendering/menu-link-render/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/rendering/menu-link-render/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/items/rendering/menu-link-render/main.vue b/vue-options-api-demos/layout/menu/items/rendering/menu-link-render/main.vue
new file mode 100644
index 00000000..9e30e111
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/items/rendering/menu-link-render/main.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+ {{ props.item.text }}
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/localization/Menu.vue b/vue-options-api-demos/layout/menu/localization/Menu.vue
new file mode 100644
index 00000000..014d5cc2
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/localization/Menu.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/menu/localization/en-US.js b/vue-options-api-demos/layout/menu/localization/en-US.js
new file mode 100644
index 00000000..cf32853a
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/localization/en-US.js
@@ -0,0 +1,9 @@
+// Custom EN Messages
+export const enCustomMessages = {
+ item1: 'Item 1 in English',
+ item11: 'Item 1.1 in English',
+ item12: 'Item 1.2 in English',
+ item2: 'Item 2 in English',
+ item21: 'Item 2.1 in English',
+ item22: 'Item 2.2 in English',
+};
diff --git a/vue-options-api-demos/layout/menu/localization/es.js b/vue-options-api-demos/layout/menu/localization/es.js
new file mode 100644
index 00000000..9c9604d9
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/localization/es.js
@@ -0,0 +1,9 @@
+// Custom ES Messages
+export const esCustomMessages = {
+ item1: 'Item 1 in Spanish',
+ item11: 'Item 1.1 in Spanish',
+ item12: 'Item 1.2 in Spanish',
+ item2: 'Item 2 in Spanish',
+ item21: 'Item 2.1 in Spanish',
+ item22: 'Item 2.2 in Spanish',
+};
diff --git a/vue-options-api-demos/layout/menu/localization/fr.js b/vue-options-api-demos/layout/menu/localization/fr.js
new file mode 100644
index 00000000..d9717ecb
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/localization/fr.js
@@ -0,0 +1,9 @@
+// Custom FR Messages
+export const frCustomMessages = {
+ item1: 'Item 1 in French',
+ item11: 'Item 1.1 in French',
+ item12: 'Item 1.2 in French',
+ item2: 'Item 2 in French',
+ item21: 'Item 2.1 in French',
+ item22: 'Item 2.2 in French',
+};
diff --git a/vue-options-api-demos/layout/menu/localization/main.js b/vue-options-api-demos/layout/menu/localization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/localization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/localization/main.vue b/vue-options-api-demos/layout/menu/localization/main.vue
new file mode 100644
index 00000000..9cff1285
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/localization/main.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/open-close/click/main.js b/vue-options-api-demos/layout/menu/open-close/click/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/open-close/click/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/open-close/click/main.vue b/vue-options-api-demos/layout/menu/open-close/click/main.vue
new file mode 100644
index 00000000..bae07def
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/open-close/click/main.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/open-close/hover/main.js b/vue-options-api-demos/layout/menu/open-close/hover/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/open-close/hover/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/open-close/hover/main.vue b/vue-options-api-demos/layout/menu/open-close/hover/main.vue
new file mode 100644
index 00000000..563db303
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/open-close/hover/main.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/overview/main.js b/vue-options-api-demos/layout/menu/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/overview/main.vue b/vue-options-api-demos/layout/menu/overview/main.vue
new file mode 100644
index 00000000..09cd5a32
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/overview/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/routing/About.vue b/vue-options-api-demos/layout/menu/routing/About.vue
new file mode 100644
index 00000000..fc3752c7
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/routing/About.vue
@@ -0,0 +1,49 @@
+
+
+
About
+
+
+ So cuffed therefore by some sadistically mallard rewrote yet
+ accommodatingly more cat adequate pesky far this dear fitting and
+ groundhog horse some selfish jeepers juggled about since upheld heatedly
+ well much.
+
+
+ Therefore falcon usefully crab during onto hello regally rat wiped
+ misread reluctant unlike iguanodon fish far bald abjectly far chameleon
+ more scurrilous gagged virtuously sufficient arrogant cobra froze dog
+ waywardly staunch thus consoled.
+
+
+ Amphibious darn well densely far meanly inanimately incoherent away
+ flamingo outside yet jeez that yawned secret evasive dear overrode rat
+ cow one overpaid far hatchet much.
+
+
+ Had aerial well well coasted darn chuckled studied underlay fatally the
+ but among because patient or shook depending much sloth wetted cheered
+ some bee.
+
+
+ Bombastically yikes some coquettish erroneously in therefore
+ disgracefully glanced some connected and goodness more read marvelous up
+ one rebukingly darn fuzzily.
+
+
+ Meadowlark and hence regarding flaunting amongst steadfastly demurely
+ like far and stiffly bled reluctant alongside jeez this save opposite
+ well and this shuddered and smoked wherever condescendingly hey onto
+ much.
+
+
+ Hello gosh gosh up effortlessly valiant hotly less rubbed gerbil and
+ ouch inside fatuous suitably far fuzzily unihibitedly locked froze
+ timidly hello much revealed lorikeet lantern this much one and far
+ decidedly.
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/menu/routing/Home.vue b/vue-options-api-demos/layout/menu/routing/Home.vue
new file mode 100644
index 00000000..96a78ccc
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/routing/Home.vue
@@ -0,0 +1,45 @@
+
+
+
Home page
+
+
+ However engaging wherever growled much methodic shamefully more human
+ agreeable gracefully and less equitable insistent gasped that when wasp
+ baboon rebuilt more slept stingily along knew llama.
+
+
+ Prim crud far healthy wholesomely more far chortled ouch in adroitly
+ gawked affably reasonably manfully reindeer mysteriously overpaid
+ considering far far until.
+
+
+ Red-handed off thickly save aboard mawkishly that amidst moth pending
+ jerkily monogamous some much or creatively indecent neat far jeepers up
+ spoiled about.
+
+
+ Owing desperate like one shark or bit yikes up so thus grumbled gosh
+ more bawled much and regardless hey far bought through crud well
+ staunchly hysteric inside incorrect the closed.
+
+
+ Industrious jubilant blanched bestially yet that less far far a wow the
+ militant preparatory crudely acrimonious under a towards lemur wedded
+ that while decorously this peered darn a much.
+
+
+ Dizzy boundless hence but because moodily and alas a truculently less
+ hardheaded so on ambiguously incompetently less moaned hilarious until
+ one jeepers amid heinously.
+
+
+ Where beneath less misspelled across artistically spiteful jeepers much
+ more that when blushed a much a this groundhog therefore far arduous
+ dependent much satanic where dear goodness hummingbird.
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/routing/Products.vue b/vue-options-api-demos/layout/menu/routing/Products.vue
new file mode 100644
index 00000000..8d4f3453
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/routing/Products.vue
@@ -0,0 +1,29 @@
+
+
+
Products
+
+
+ Inclusive and foolishly more on yikes far one vociferous squinted lied
+ much the howled disagreed yet seal needlessly vulgarly far moistly
+ wanton.
+
+
+ Human and some barring roadrunner behind swore hello ebulliently pending
+ less upon amiable less amiably dear harsh telepathic regarding hey
+ poignant ahead.
+
+
+ Immensely a that gosh accurately by naughtily patted laxly far pangolin
+ ouch this like marvelous bitter crab jeez after unobtrusive flamboyant
+ octopus.
+
+
+ So koala that ouch and much porpoise falcon from and wasp curtly crud
+ much more frequently and accidental beneath during far.
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/menu/routing/Team.vue b/vue-options-api-demos/layout/menu/routing/Team.vue
new file mode 100644
index 00000000..ad3d8953
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/routing/Team.vue
@@ -0,0 +1,39 @@
+
+
+
Team
+
+
+ Leapt sprang volubly that or adroitly cozy sold creepy shuffled spent
+ flirted withdrew gosh zebra prideful swung yawned monkey penguin.
+
+
+ This wow flinched one immoral this dear far inflexible newt far outside
+ up hey excluding goodness hello much after feverishly direly fitted wow
+ some youthful crud stark more strict unjustifiable that told one.
+
+
+ Shark audible mistook removed tryingly much delicate yet sudden after
+ contrary thus brusque more won wallaby frowningly much censorious spryly
+ thanks circuitous this sewed dreamed wow.
+
+
+ The against alas less adoringly some cutting aboard lighted some dear
+ agilely and enticingly before thanks upon was neglectful merrily some
+ porpoise tenably and and groundhog together kiwi much barked miser.
+
+
+ Much flamingo mocking much far far some since among ritually since crud
+ near one tartly left far and far this ineffectively goodness mighty some
+ and intricately far.
+
+
+ Modestly mastodon hypocritically hatchet gerbil successful dispassionate
+ nefariously and the dangerously far in one less save gosh became and
+ sparing that by alas.
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/menu/routing/index.js b/vue-options-api-demos/layout/menu/routing/index.js
new file mode 100644
index 00000000..fce5e2ad
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/routing/index.js
@@ -0,0 +1,35 @@
+import { createWebHistory, createRouter } from "vue-router";
+import Home from "./Home";
+import About from "./About";
+import Products from "./Products";
+import Team from "./Team";
+
+const routes = [
+ {
+ path: "/layout/menu/routing/home",
+ name: "Home",
+ component: Home
+ },
+ {
+ path: "/layout/menu/routing/about",
+ name: "About",
+ component: About
+ },
+ {
+ path: "/layout/menu/routing/products",
+ name: "Products",
+ component: Products
+ },
+ {
+ path: "/layout/menu/routing/about/team",
+ name: "Team",
+ component: Team
+ }
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes
+});
+
+export default router;
diff --git a/vue-options-api-demos/layout/menu/routing/main.js b/vue-options-api-demos/layout/menu/routing/main.js
new file mode 100644
index 00000000..b51f2405
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/routing/main.js
@@ -0,0 +1,5 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+import router from "./index.js";
+
+createApp(App).use(router).mount("#app");
diff --git a/vue-options-api-demos/layout/menu/routing/main.vue b/vue-options-api-demos/layout/menu/routing/main.vue
new file mode 100644
index 00000000..229bff33
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/routing/main.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/menu/vertical/main.js b/vue-options-api-demos/layout/menu/vertical/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/vertical/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/menu/vertical/main.vue b/vue-options-api-demos/layout/menu/vertical/main.vue
new file mode 100644
index 00000000..dc7d4890
--- /dev/null
+++ b/vue-options-api-demos/layout/menu/vertical/main.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/AccountDetails.vue b/vue-options-api-demos/layout/overview/AccountDetails.vue
new file mode 100644
index 00000000..8ae89334
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/AccountDetails.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/Avatar.vue b/vue-options-api-demos/layout/overview/Avatar.vue
new file mode 100644
index 00000000..bc369d9f
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/Avatar.vue
@@ -0,0 +1,129 @@
+
+
+
Contacts
+
+
+
+
+ {{ contact.avatar }}
+
+
+
+ {{ contact.name }}
+
+
+ {{ contact.position }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ contact.name }}
+
+
+ {{ contact.position }}
+
+
+
+
+
+
+
+
+
+
+
Unknown
+
Not specified
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/BottomNavigation.vue b/vue-options-api-demos/layout/overview/BottomNavigation.vue
new file mode 100644
index 00000000..4306f654
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/BottomNavigation.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
Inbox
+ Calendar
+ Profile
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/Card.vue b/vue-options-api-demos/layout/overview/Card.vue
new file mode 100644
index 00000000..c512e342
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/Card.vue
@@ -0,0 +1,58 @@
+
+
+
+
+ Barcelona
+
+
+
+ Barcelona, the cosmopolitan capital of Spain's Catalonia region, is
+ known for its art and architecture.
+
+
+ The fantastical Sagrada FamÃlia church and other modernist landmarks
+ designed by Antoni Gaudà dot the city.
+
+
+
+
+ Map
+
+
+ Weather
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/ContextMenu.vue b/vue-options-api-demos/layout/overview/ContextMenu.vue
new file mode 100644
index 00000000..af0f28e1
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/ContextMenu.vue
@@ -0,0 +1,93 @@
+
+
+
+
Right click here to open a Context menu
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/ExpansionPanel.vue b/vue-options-api-demos/layout/overview/ExpansionPanel.vue
new file mode 100644
index 00000000..d7d058e5
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/ExpansionPanel.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+ The name “Colombia” is derived from the last name of the Italian
+ navigator Christopher Columbus. It was conceived by the Venezuelan
+ revolutionary Francisco de Miranda as a reference to all of the
+ New World, but especially to those portions under Spanish law. The
+ name was later adopted by the Republic of Colombia of 1819, formed
+ from the territories of the old Viceroyalty of New Granada
+ (modern-day Colombia, Panama, Venezuela, Ecuador, and northwest
+ Brazil).
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/FormInput.vue b/vue-options-api-demos/layout/overview/FormInput.vue
new file mode 100644
index 00000000..e9551d6f
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/FormInput.vue
@@ -0,0 +1,90 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/GridLayout.vue b/vue-options-api-demos/layout/overview/GridLayout.vue
new file mode 100644
index 00000000..e15160d0
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/GridLayout.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+ Box
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/Menu.vue b/vue-options-api-demos/layout/overview/Menu.vue
new file mode 100644
index 00000000..8d7af4b5
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/Menu.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/overview/PanelBar.vue b/vue-options-api-demos/layout/overview/PanelBar.vue
new file mode 100644
index 00000000..0304614a
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/PanelBar.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+ Andrew Fuller
+ Team Lead
+
+
+
+
+
+ Nancy Leverling
+ Sales Associate
+
+
+
+
+
+ Robert King
+ Business System Analyst
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/PersonalDetails.vue b/vue-options-api-demos/layout/overview/PersonalDetails.vue
new file mode 100644
index 00000000..d487cf61
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/PersonalDetails.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/Register.vue b/vue-options-api-demos/layout/overview/Register.vue
new file mode 100644
index 00000000..39ca5fea
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/Register.vue
@@ -0,0 +1,17 @@
+
+
+ Click on the "Register" button to complete your registration.
+
+
+
diff --git a/vue-options-api-demos/layout/overview/Splitter.vue b/vue-options-api-demos/layout/overview/Splitter.vue
new file mode 100644
index 00000000..dd2306f9
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/Splitter.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
Inner splitter / left pane
+
Resizable and collapsible.
+
+
+
+
+
Inner splitter / center pane
+
Resizable only.
+
+
+
+
+
Inner splitter / right pane
+
Resizable and collapsible.
+
+
+
+
+
+
+
Outer splitter / Middle pane
+
Resizable only.
+
+
+
+
+
Outer splitter / Middle pane
+
Resizable only.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/overview/StackLayout.vue b/vue-options-api-demos/layout/overview/StackLayout.vue
new file mode 100644
index 00000000..82724c7f
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/StackLayout.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+ Navigation
+ Content
+ TOC
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/Stepper.vue b/vue-options-api-demos/layout/overview/Stepper.vue
new file mode 100644
index 00000000..88b07b7d
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/Stepper.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/TabStrip.vue b/vue-options-api-demos/layout/overview/TabStrip.vue
new file mode 100644
index 00000000..07a34d77
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/TabStrip.vue
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+
+
17ºC
+
Rainy weather in Paris.
+
+
City info
+
+ Paris is the capital and most populous city of France. It has an area
+ of 105 square kilometres (41 square miles) and a population in 2013 of
+ 2,229,621 within its administrative limits. The city is both a commune
+ and department, and forms the centre and headquarters of the
+ Île-de-France, or Paris Region, which has an area of 12,012 square
+ kilometres (4,638 square miles) and a population in 2014 of
+ 12,005,077, comprising 18.2 percent of the population of France.
+
+
+
+
+
+
+
+
+
+
29ºC
+
Sunny weather in New York.
+
+
City info
+
+ The City of New York, often called New York City or simply New York,
+ is the most populous city in the United States. With an estimated 2015
+ population of 8,550,405 distributed over a land area of just 305
+ square miles (790 km2), New York City is also the most densely
+ populated major city in the United States. Located at the southern tip
+ of the state of New York, the city is the center of the New York
+ metropolitan area, one of the most populous urban agglomerations in
+ the world.
+
+
+ A global power city, New York City exerts a significant impact upon
+ commerce, finance, media, art, fashion, research, technology,
+ education, and entertainment, its fast pace defining the term New York
+ minute. Home to the headquarters of the United Nations, New York is an
+ important center for international diplomacy and has been described as
+ the cultural and financial capital of the world.
+
+
+
+
+
+
+
+
+
+
21ºC
+
Sunny weather in Tallin.
+
+
City info
+
+ Tallinn is the capital and largest city of Estonia. It is situated on
+ the northern coast of the country, on the shore of the Gulf of
+ Finland, 80 km (50 mi) south of Helsinki, east of Stockholm and west
+ of Saint Petersburg. From the 13th century until 1918 (and briefly
+ during the Nazi occupation of Estonia from 1941 to 1944), the city was
+ known as Reval. Tallinn occupies an area of 159.2 km2 (61.5 sq mi) and
+ has a population of 443,894. Approximately 32% of Estonia's total
+ population lives in Tallinn.
+
+
+ Tallinn was founded in 1248, but the earliest human settlements are
+ over 5,000 years old, making it one of the oldest capital cities of
+ Northern Europe. Due to its strategic location, the city became a
+ major trade hub, especially from the 14th to the 16th century, when it
+ grew in importance as part of the Hanseatic League.
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/TileLayout.vue b/vue-options-api-demos/layout/overview/TileLayout.vue
new file mode 100644
index 00000000..07d0215f
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/TileLayout.vue
@@ -0,0 +1,65 @@
+
+
+ Tile 1
+
+ Reorderable and resizable tile.
+
+ Tile 2
+
+ Reorderable and horizontally resizable only tile.
+
+ Tile 3
+
+ Reorderable and vertically resizable only tile.
+
+ Tile 4
+
+ Resizable only.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/overview/Wizard.vue b/vue-options-api-demos/layout/overview/Wizard.vue
new file mode 100644
index 00000000..a2395fdd
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/Wizard.vue
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Step {{ step + 1 }} of 3
+
+
+
+
+ Previous
+
+
+
+ {{ isLastStep ? 'Register' : 'Next' }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/overview/gridlayout-styles.css b/vue-options-api-demos/layout/overview/gridlayout-styles.css
new file mode 100644
index 00000000..5b70dce8
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/gridlayout-styles.css
@@ -0,0 +1,22 @@
+.example-wrapper-gridlayout {
+ width: 300px;
+ margin: 0 auto;
+}
+.page {
+ padding: 20px 10px;
+}
+.content {
+ background: #f9f9f9;
+ overflow: auto;
+}
+.box {
+ padding: 4px;
+ background-color: #87dfce;
+ height: 100%;
+}
+.big {
+ background-color: #fea69c;
+}
+.rect {
+ background-color: #fee47c;
+}
diff --git a/vue-options-api-demos/layout/overview/index.js b/vue-options-api-demos/layout/overview/index.js
new file mode 100644
index 00000000..06959308
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/index.js
@@ -0,0 +1,95 @@
+import { createWebHistory, createRouter } from 'vue-router';
+import Avatar from './Avatar';
+import BottomNavigation from './BottomNavigation';
+import Card from './Card';
+import ContextMenu from './ContextMenu';
+import GridLayout from './GridLayout';
+import ExpansionPanel from './ExpansionPanel';
+import Menu from './Menu';
+import Splitter from './Splitter';
+import StackLayout from './StackLayout';
+import Stepper from './Stepper';
+import PanelBar from './PanelBar';
+import TabStrip from './TabStrip';
+import TileLayout from './TileLayout';
+import Wizard from './Wizard';
+
+const routes = [
+ {
+ path: '/layout/overview/avatar',
+ name: 'Avatar',
+ component: Avatar,
+ },
+ {
+ path: '/layout/overview/bottomnavigation',
+ name: 'BottomNavigation',
+ component: BottomNavigation,
+ },
+ {
+ path: '/layout/overview/card',
+ name: 'Card',
+ component: Card,
+ },
+ {
+ path: '/layout/overview/contextmenu',
+ name: 'ContextMenu',
+ component: ContextMenu,
+ },
+ {
+ path: '/layout/overview/expansionpanel',
+ name: 'ExpansionPanel',
+ component: ExpansionPanel,
+ },
+ {
+ path: '/layout/overview/gridlayout',
+ name: 'GridLayout',
+ component: GridLayout,
+ },
+ {
+ path: '/layout/overview/menu',
+ name: 'Menu',
+ component: Menu,
+ },
+ {
+ path: '/layout/overview/panelbar',
+ name: 'PanelBar',
+ component: PanelBar,
+ },
+ {
+ path: '/layout/overview/splitter',
+ name: 'Splitter',
+ component: Splitter,
+ },
+ {
+ path: '/layout/overview/stacklayout',
+ name: 'StackLayout',
+ component: StackLayout,
+ },
+ {
+ path: '/layout/overview/stepper',
+ name: 'Stepper',
+ component: Stepper,
+ },
+ {
+ path: '/layout/overview/tabstrip',
+ name: 'TabStrip',
+ component: TabStrip,
+ },
+ {
+ path: '/layout/overview/tilelayout',
+ name: 'TileLayout',
+ component: TileLayout,
+ },
+ {
+ path: '/layout/overview/wizard',
+ name: 'Wizard',
+ component: Wizard,
+ },
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes,
+});
+
+export default router;
diff --git a/vue-options-api-demos/layout/overview/main.js b/vue-options-api-demos/layout/overview/main.js
new file mode 100644
index 00000000..8632ea7b
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+import router from './index.js';
+
+createApp(App).use(router).mount('#app');
diff --git a/vue-options-api-demos/layout/overview/main.vue b/vue-options-api-demos/layout/overview/main.vue
new file mode 100644
index 00000000..a99c1365
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/main.vue
@@ -0,0 +1,277 @@
+
+
+
+
+
+
+
+
+
+
+ AppBar expanding Drawer component
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/overview/panelbar-styles.css b/vue-options-api-demos/layout/overview/panelbar-styles.css
new file mode 100644
index 00000000..34a35a5e
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/panelbar-styles.css
@@ -0,0 +1,35 @@
+.teamMate:after {
+ content: ".";
+ display: block;
+ height: 0;
+ line-height: 0;
+ clear: both;
+ visibility: hidden;
+}
+.teamMate h2 {
+ font-size: 1.3em;
+ font-weight: normal;
+ padding-top: 17px;
+ margin: 0;
+}
+.teamMate p {
+ margin: 0;
+ font-size: .8em;
+}
+.teamMate img {
+ display: inline-block;
+ vertical-align: top;
+ width: 50px;
+ height: 50px;
+ margin: 10px;
+ border: 1px solid #ccc;
+ border-radius: 50%;
+}
+.mate-info {
+ display: inline-block;
+ vertical-align: top;
+}
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/overview/splitter-styles.css b/vue-options-api-demos/layout/overview/splitter-styles.css
new file mode 100644
index 00000000..31339449
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/splitter-styles.css
@@ -0,0 +1,14 @@
+.pane-content {
+ padding: 0 10px;
+}
+
+h3 {
+ font-size: 1.2em;
+ margin: 10px 0;
+ padding: 0;
+}
+
+p {
+ margin: 0;
+ padding: 0;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/overview/stacklayout-styles.css b/vue-options-api-demos/layout/overview/stacklayout-styles.css
new file mode 100644
index 00000000..76d15e1d
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/stacklayout-styles.css
@@ -0,0 +1,20 @@
+.box {
+ padding: 4px;
+ text-align: center;
+ vertical-align: center;
+}
+.stacklayout-header {
+ background-color: #fae47a;
+}
+.nav {
+ background-color: #fbd17f;
+}
+.box.stacklayout-content {
+ background-color: #f5bf8b;
+}
+.toc {
+ background-color: #ebaa79;
+}
+.stacklayout-footer {
+ background-color: #e39a6a;
+}
diff --git a/vue-options-api-demos/layout/overview/styles.css b/vue-options-api-demos/layout/overview/styles.css
new file mode 100644
index 00000000..5d4133de
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/styles.css
@@ -0,0 +1,49 @@
+my-app {
+ padding: 0 !important;
+}
+.k-drawer-content {
+ height: 100%;
+}
+.k-drawer-container > .k-drawer-content > .content-overview {
+ padding: 40px 50px 40px 40px;
+ height: 100%;
+}
+.k-drawer-container {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+}
+.k-drawer-item {
+ user-select: none;
+}
+.k-icon {
+ font-size: 20px;
+}
+.mail-box {
+ margin-left: 20px;
+ font-weight: bold;
+ font-size: 17px;
+}
+.page ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+.page li {
+ font-size: 1.2em;
+ background: 0 0;
+ border-radius: 0;
+ border-width: 0 0 1px;
+ border-color: rgba(33, 37, 41, 0.125);
+ border-style: solid;
+ line-height: 1.5em;
+ padding: 1.09em 0.84em 1.23em 0.84em;
+}
+.page li:last-child {
+ border: 0;
+}
+
+h1.title {
+ font-size: 18px;
+ margin: 0;
+}
diff --git a/vue-options-api-demos/layout/overview/validators.js b/vue-options-api-demos/layout/overview/validators.js
new file mode 100644
index 00000000..b1fa8aa6
--- /dev/null
+++ b/vue-options-api-demos/layout/overview/validators.js
@@ -0,0 +1,83 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = (value) =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = (value) =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = (value) =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = (value) =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = (value) =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = (value) =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = (value) =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = (value) =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = (value) =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = (value) =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = (value) => (value ? '' : 'Color is required.');
+export const requiredValidator = (value) =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = (value) =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = (value) =>
+ value ? '' : 'Address is required.';
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = (values) => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.',
+ };
+};
diff --git a/vue-options-api-demos/layout/panelbar/animation/main.js b/vue-options-api-demos/layout/panelbar/animation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/animation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/animation/main.vue b/vue-options-api-demos/layout/panelbar/animation/main.vue
new file mode 100644
index 00000000..c5d496b9
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/animation/main.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/animation/styles.css b/vue-options-api-demos/layout/panelbar/animation/styles.css
new file mode 100644
index 00000000..bccdcb24
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/animation/styles.css
@@ -0,0 +1,35 @@
+.teamMate:after {
+ content: ".";
+ display: block;
+ height: 0;
+ line-height: 0;
+ clear: both;
+ visibility: hidden;
+}
+.teamMate h2 {
+ font-size: 1.3em;
+ font-weight: normal;
+ padding-top: 17px;
+ margin: 0;
+}
+.teamMate p {
+ margin: 0;
+ font-size: .8em;
+}
+.teamMate img {
+ display: inline-block;
+ vertical-align: top;
+ width: 50px;
+ height: 50px;
+ margin: 10px;
+ border: 1px solid #ccc;
+ border-radius: 50%;
+}
+.mate-info {
+ display: inline-block;
+ vertical-align: top;
+}
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/binding/local/main.js b/vue-options-api-demos/layout/panelbar/binding/local/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/binding/local/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/binding/local/main.vue b/vue-options-api-demos/layout/panelbar/binding/local/main.vue
new file mode 100644
index 00000000..c8dbacc7
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/binding/local/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
+ First Item Template
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/binding/local/styles.css b/vue-options-api-demos/layout/panelbar/binding/local/styles.css
new file mode 100644
index 00000000..6559c072
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/binding/local/styles.css
@@ -0,0 +1,3 @@
+.k-content {
+ padding: 4px 8px;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/binding/remote/main.js b/vue-options-api-demos/layout/panelbar/binding/remote/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/binding/remote/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/binding/remote/main.vue b/vue-options-api-demos/layout/panelbar/binding/remote/main.vue
new file mode 100644
index 00000000..cc511985
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/binding/remote/main.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/binding/remote/styles.css b/vue-options-api-demos/layout/panelbar/binding/remote/styles.css
new file mode 100644
index 00000000..722d0c5f
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/binding/remote/styles.css
@@ -0,0 +1,8 @@
+.panelbar-wrapper {
+ max-width: 400px;
+ margin: 0 auto;
+}
+.custom-loading-template {
+ padding: 30px;
+ text-align: center;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/controlled-state/all/main.js b/vue-options-api-demos/layout/panelbar/controlled-state/all/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/controlled-state/all/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/controlled-state/all/main.vue b/vue-options-api-demos/layout/panelbar/controlled-state/all/main.vue
new file mode 100644
index 00000000..a4d76933
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/controlled-state/all/main.vue
@@ -0,0 +1,12 @@
+
+
+ Vue component
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/controlled-state/basic/main.js b/vue-options-api-demos/layout/panelbar/controlled-state/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/controlled-state/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/controlled-state/basic/main.vue b/vue-options-api-demos/layout/panelbar/controlled-state/basic/main.vue
new file mode 100644
index 00000000..0c916111
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/controlled-state/basic/main.vue
@@ -0,0 +1,120 @@
+
+ Collapse All items
+ Expand All items
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/controlled-state/basic/styles.css b/vue-options-api-demos/layout/panelbar/controlled-state/basic/styles.css
new file mode 100644
index 00000000..53f83a9a
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/controlled-state/basic/styles.css
@@ -0,0 +1,5 @@
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+ }
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/controlled/basic/main.js b/vue-options-api-demos/layout/panelbar/controlled/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/controlled/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/controlled/basic/main.vue b/vue-options-api-demos/layout/panelbar/controlled/basic/main.vue
new file mode 100644
index 00000000..b96c34c5
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/controlled/basic/main.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/controlled/basic/styles.css b/vue-options-api-demos/layout/panelbar/controlled/basic/styles.css
new file mode 100644
index 00000000..239429a9
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/controlled/basic/styles.css
@@ -0,0 +1,4 @@
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/controlled/custom/main.js b/vue-options-api-demos/layout/panelbar/controlled/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/controlled/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/controlled/custom/main.vue b/vue-options-api-demos/layout/panelbar/controlled/custom/main.vue
new file mode 100644
index 00000000..1954e09d
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/controlled/custom/main.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/controlled/custom/styles.css b/vue-options-api-demos/layout/panelbar/controlled/custom/styles.css
new file mode 100644
index 00000000..239429a9
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/controlled/custom/styles.css
@@ -0,0 +1,4 @@
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/custom/collections/main.js b/vue-options-api-demos/layout/panelbar/custom/collections/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/custom/collections/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/custom/collections/main.vue b/vue-options-api-demos/layout/panelbar/custom/collections/main.vue
new file mode 100644
index 00000000..6f1bc513
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/custom/collections/main.vue
@@ -0,0 +1,38 @@
+
+
+
+
+ First item content
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/custom/collections/styles.css b/vue-options-api-demos/layout/panelbar/custom/collections/styles.css
new file mode 100644
index 00000000..1882d556
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/custom/collections/styles.css
@@ -0,0 +1,4 @@
+.custom-template {
+ padding: 30px;
+ text-align: center;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/custom/custom/main.js b/vue-options-api-demos/layout/panelbar/custom/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/custom/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/custom/custom/main.vue b/vue-options-api-demos/layout/panelbar/custom/custom/main.vue
new file mode 100644
index 00000000..9bb29c49
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/custom/custom/main.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+ First Item Template.
+ {{ props.item.myCustomProp }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/custom/custom/styles.css b/vue-options-api-demos/layout/panelbar/custom/custom/styles.css
new file mode 100644
index 00000000..239429a9
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/custom/custom/styles.css
@@ -0,0 +1,4 @@
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/expand/main.js b/vue-options-api-demos/layout/panelbar/expand/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/expand/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/expand/main.vue b/vue-options-api-demos/layout/panelbar/expand/main.vue
new file mode 100644
index 00000000..61502f8a
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/expand/main.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
Expand modes:
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/expand/styles.css b/vue-options-api-demos/layout/panelbar/expand/styles.css
new file mode 100644
index 00000000..239429a9
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/expand/styles.css
@@ -0,0 +1,4 @@
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/items/custom/main.js b/vue-options-api-demos/layout/panelbar/items/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/items/custom/main.vue b/vue-options-api-demos/layout/panelbar/items/custom/main.vue
new file mode 100644
index 00000000..656d5755
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/custom/main.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+ First Item Template.
+ {{ props.item.myCustomProp }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/items/custom/styles.css b/vue-options-api-demos/layout/panelbar/items/custom/styles.css
new file mode 100644
index 00000000..239429a9
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/custom/styles.css
@@ -0,0 +1,4 @@
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/items/state/disabled/main.js b/vue-options-api-demos/layout/panelbar/items/state/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/state/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/items/state/disabled/main.vue b/vue-options-api-demos/layout/panelbar/items/state/disabled/main.vue
new file mode 100644
index 00000000..c0bae9fc
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/state/disabled/main.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/items/state/disabled/styles.css b/vue-options-api-demos/layout/panelbar/items/state/disabled/styles.css
new file mode 100644
index 00000000..239429a9
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/state/disabled/styles.css
@@ -0,0 +1,4 @@
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/items/state/expanded/main.js b/vue-options-api-demos/layout/panelbar/items/state/expanded/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/state/expanded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/items/state/expanded/main.vue b/vue-options-api-demos/layout/panelbar/items/state/expanded/main.vue
new file mode 100644
index 00000000..ed979edd
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/state/expanded/main.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/items/state/expanded/styles.css b/vue-options-api-demos/layout/panelbar/items/state/expanded/styles.css
new file mode 100644
index 00000000..239429a9
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/state/expanded/styles.css
@@ -0,0 +1,4 @@
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/items/state/selected/main.js b/vue-options-api-demos/layout/panelbar/items/state/selected/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/state/selected/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/items/state/selected/main.vue b/vue-options-api-demos/layout/panelbar/items/state/selected/main.vue
new file mode 100644
index 00000000..a3fdcc6c
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/state/selected/main.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/items/state/selected/styles.css b/vue-options-api-demos/layout/panelbar/items/state/selected/styles.css
new file mode 100644
index 00000000..239429a9
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/state/selected/styles.css
@@ -0,0 +1,4 @@
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/items/titles/getting-started/main.js b/vue-options-api-demos/layout/panelbar/items/titles/getting-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/titles/getting-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/items/titles/getting-started/main.vue b/vue-options-api-demos/layout/panelbar/items/titles/getting-started/main.vue
new file mode 100644
index 00000000..7379d29a
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/titles/getting-started/main.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/items/titles/getting-started/styles.css b/vue-options-api-demos/layout/panelbar/items/titles/getting-started/styles.css
new file mode 100644
index 00000000..239429a9
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/titles/getting-started/styles.css
@@ -0,0 +1,4 @@
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/items/titles/icons/main.js b/vue-options-api-demos/layout/panelbar/items/titles/icons/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/titles/icons/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/items/titles/icons/main.vue b/vue-options-api-demos/layout/panelbar/items/titles/icons/main.vue
new file mode 100644
index 00000000..abe505f9
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/titles/icons/main.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/items/titles/icons/styles.css b/vue-options-api-demos/layout/panelbar/items/titles/icons/styles.css
new file mode 100644
index 00000000..239429a9
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/titles/icons/styles.css
@@ -0,0 +1,4 @@
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/items/titles/images/main.js b/vue-options-api-demos/layout/panelbar/items/titles/images/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/titles/images/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/items/titles/images/main.vue b/vue-options-api-demos/layout/panelbar/items/titles/images/main.vue
new file mode 100644
index 00000000..65227965
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/titles/images/main.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/items/titles/images/styles.css b/vue-options-api-demos/layout/panelbar/items/titles/images/styles.css
new file mode 100644
index 00000000..239429a9
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/items/titles/images/styles.css
@@ -0,0 +1,4 @@
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/keyboard/main.js b/vue-options-api-demos/layout/panelbar/keyboard/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/keyboard/main.vue b/vue-options-api-demos/layout/panelbar/keyboard/main.vue
new file mode 100644
index 00000000..fd551665
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/keyboard/main.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/keyboard/styles.css b/vue-options-api-demos/layout/panelbar/keyboard/styles.css
new file mode 100644
index 00000000..bccdcb24
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/keyboard/styles.css
@@ -0,0 +1,35 @@
+.teamMate:after {
+ content: ".";
+ display: block;
+ height: 0;
+ line-height: 0;
+ clear: both;
+ visibility: hidden;
+}
+.teamMate h2 {
+ font-size: 1.3em;
+ font-weight: normal;
+ padding-top: 17px;
+ margin: 0;
+}
+.teamMate p {
+ margin: 0;
+ font-size: .8em;
+}
+.teamMate img {
+ display: inline-block;
+ vertical-align: top;
+ width: 50px;
+ height: 50px;
+ margin: 10px;
+ border: 1px solid #ccc;
+ border-radius: 50%;
+}
+.mate-info {
+ display: inline-block;
+ vertical-align: top;
+}
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/mounted/main.js b/vue-options-api-demos/layout/panelbar/mounted/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/mounted/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/mounted/main.vue b/vue-options-api-demos/layout/panelbar/mounted/main.vue
new file mode 100644
index 00000000..a4d76933
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/mounted/main.vue
@@ -0,0 +1,12 @@
+
+
+ Vue component
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/overview/basic/main.js b/vue-options-api-demos/layout/panelbar/overview/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/overview/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/overview/basic/main.vue b/vue-options-api-demos/layout/panelbar/overview/basic/main.vue
new file mode 100644
index 00000000..9d038817
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/overview/basic/main.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+ Andrew Fuller
+ Team Lead
+
+
+
+
+
+ Nancy Leverling
+ Sales Associate
+
+
+
+
+
+ Robert King
+ Business System Analyst
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/overview/basic/styles.css b/vue-options-api-demos/layout/panelbar/overview/basic/styles.css
new file mode 100644
index 00000000..bccdcb24
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/overview/basic/styles.css
@@ -0,0 +1,35 @@
+.teamMate:after {
+ content: ".";
+ display: block;
+ height: 0;
+ line-height: 0;
+ clear: both;
+ visibility: hidden;
+}
+.teamMate h2 {
+ font-size: 1.3em;
+ font-weight: normal;
+ padding-top: 17px;
+ margin: 0;
+}
+.teamMate p {
+ margin: 0;
+ font-size: .8em;
+}
+.teamMate img {
+ display: inline-block;
+ vertical-align: top;
+ width: 50px;
+ height: 50px;
+ margin: 10px;
+ border: 1px solid #ccc;
+ border-radius: 50%;
+}
+.mate-info {
+ display: inline-block;
+ vertical-align: top;
+}
+.panelbar-wrapper {
+ max-width: 300px;
+ margin: 0 auto;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/overview/events/Logger.vue b/vue-options-api-demos/layout/panelbar/overview/events/Logger.vue
new file mode 100644
index 00000000..833738a1
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/overview/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
{{ title }}
+
+ {{ events.length - idx }}. {{ event }}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/overview/events/main.js b/vue-options-api-demos/layout/panelbar/overview/events/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/overview/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/panelbar/overview/events/main.vue b/vue-options-api-demos/layout/panelbar/overview/events/main.vue
new file mode 100644
index 00000000..60743625
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/overview/events/main.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/overview/events/styles.css b/vue-options-api-demos/layout/panelbar/overview/events/styles.css
new file mode 100644
index 00000000..5bcfa632
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/overview/events/styles.css
@@ -0,0 +1,20 @@
+.pane-content {
+ padding: 0 10px;
+}
+
+h3 {
+ font-size: 1.2em;
+ margin: 10px 0;
+ padding: 0;
+}
+
+h4 {
+ font-size: 1em;
+ margin: 10px 0;
+ padding: 0;
+}
+
+p {
+ margin: 0;
+ padding: 0;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/routing/About.vue b/vue-options-api-demos/layout/panelbar/routing/About.vue
new file mode 100644
index 00000000..fc3752c7
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/routing/About.vue
@@ -0,0 +1,49 @@
+
+
+
About
+
+
+ So cuffed therefore by some sadistically mallard rewrote yet
+ accommodatingly more cat adequate pesky far this dear fitting and
+ groundhog horse some selfish jeepers juggled about since upheld heatedly
+ well much.
+
+
+ Therefore falcon usefully crab during onto hello regally rat wiped
+ misread reluctant unlike iguanodon fish far bald abjectly far chameleon
+ more scurrilous gagged virtuously sufficient arrogant cobra froze dog
+ waywardly staunch thus consoled.
+
+
+ Amphibious darn well densely far meanly inanimately incoherent away
+ flamingo outside yet jeez that yawned secret evasive dear overrode rat
+ cow one overpaid far hatchet much.
+
+
+ Had aerial well well coasted darn chuckled studied underlay fatally the
+ but among because patient or shook depending much sloth wetted cheered
+ some bee.
+
+
+ Bombastically yikes some coquettish erroneously in therefore
+ disgracefully glanced some connected and goodness more read marvelous up
+ one rebukingly darn fuzzily.
+
+
+ Meadowlark and hence regarding flaunting amongst steadfastly demurely
+ like far and stiffly bled reluctant alongside jeez this save opposite
+ well and this shuddered and smoked wherever condescendingly hey onto
+ much.
+
+
+ Hello gosh gosh up effortlessly valiant hotly less rubbed gerbil and
+ ouch inside fatuous suitably far fuzzily unihibitedly locked froze
+ timidly hello much revealed lorikeet lantern this much one and far
+ decidedly.
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/routing/Home.vue b/vue-options-api-demos/layout/panelbar/routing/Home.vue
new file mode 100644
index 00000000..96a78ccc
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/routing/Home.vue
@@ -0,0 +1,45 @@
+
+
+
Home page
+
+
+ However engaging wherever growled much methodic shamefully more human
+ agreeable gracefully and less equitable insistent gasped that when wasp
+ baboon rebuilt more slept stingily along knew llama.
+
+
+ Prim crud far healthy wholesomely more far chortled ouch in adroitly
+ gawked affably reasonably manfully reindeer mysteriously overpaid
+ considering far far until.
+
+
+ Red-handed off thickly save aboard mawkishly that amidst moth pending
+ jerkily monogamous some much or creatively indecent neat far jeepers up
+ spoiled about.
+
+
+ Owing desperate like one shark or bit yikes up so thus grumbled gosh
+ more bawled much and regardless hey far bought through crud well
+ staunchly hysteric inside incorrect the closed.
+
+
+ Industrious jubilant blanched bestially yet that less far far a wow the
+ militant preparatory crudely acrimonious under a towards lemur wedded
+ that while decorously this peered darn a much.
+
+
+ Dizzy boundless hence but because moodily and alas a truculently less
+ hardheaded so on ambiguously incompetently less moaned hilarious until
+ one jeepers amid heinously.
+
+
+ Where beneath less misspelled across artistically spiteful jeepers much
+ more that when blushed a much a this groundhog therefore far arduous
+ dependent much satanic where dear goodness hummingbird.
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/panelbar/routing/Products.vue b/vue-options-api-demos/layout/panelbar/routing/Products.vue
new file mode 100644
index 00000000..8d4f3453
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/routing/Products.vue
@@ -0,0 +1,29 @@
+
+
+
Products
+
+
+ Inclusive and foolishly more on yikes far one vociferous squinted lied
+ much the howled disagreed yet seal needlessly vulgarly far moistly
+ wanton.
+
+
+ Human and some barring roadrunner behind swore hello ebulliently pending
+ less upon amiable less amiably dear harsh telepathic regarding hey
+ poignant ahead.
+
+
+ Immensely a that gosh accurately by naughtily patted laxly far pangolin
+ ouch this like marvelous bitter crab jeez after unobtrusive flamboyant
+ octopus.
+
+
+ So koala that ouch and much porpoise falcon from and wasp curtly crud
+ much more frequently and accidental beneath during far.
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/routing/Team.vue b/vue-options-api-demos/layout/panelbar/routing/Team.vue
new file mode 100644
index 00000000..ad3d8953
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/routing/Team.vue
@@ -0,0 +1,39 @@
+
+
+
Team
+
+
+ Leapt sprang volubly that or adroitly cozy sold creepy shuffled spent
+ flirted withdrew gosh zebra prideful swung yawned monkey penguin.
+
+
+ This wow flinched one immoral this dear far inflexible newt far outside
+ up hey excluding goodness hello much after feverishly direly fitted wow
+ some youthful crud stark more strict unjustifiable that told one.
+
+
+ Shark audible mistook removed tryingly much delicate yet sudden after
+ contrary thus brusque more won wallaby frowningly much censorious spryly
+ thanks circuitous this sewed dreamed wow.
+
+
+ The against alas less adoringly some cutting aboard lighted some dear
+ agilely and enticingly before thanks upon was neglectful merrily some
+ porpoise tenably and and groundhog together kiwi much barked miser.
+
+
+ Much flamingo mocking much far far some since among ritually since crud
+ near one tartly left far and far this ineffectively goodness mighty some
+ and intricately far.
+
+
+ Modestly mastodon hypocritically hatchet gerbil successful dispassionate
+ nefariously and the dangerously far in one less save gosh became and
+ sparing that by alas.
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/panelbar/routing/index.js b/vue-options-api-demos/layout/panelbar/routing/index.js
new file mode 100644
index 00000000..0b78e644
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/routing/index.js
@@ -0,0 +1,35 @@
+import { createWebHistory, createRouter } from "vue-router";
+import Home from "./Home";
+import About from "./About";
+import Products from "./Products";
+import Team from "./Team";
+
+const routes = [
+ {
+ path: "/layout/panelbar/routing/home",
+ name: "Home",
+ component: Home
+ },
+ {
+ path: "/layout/panelbar/routing/about",
+ name: "About",
+ component: About
+ },
+ {
+ path: "/layout/panelbar/routing/products",
+ name: "Products",
+ component: Products
+ },
+ {
+ path: "/layout/panelbar/routing/about/team",
+ name: "Team",
+ component: Team
+ }
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes
+});
+
+export default router;
diff --git a/vue-options-api-demos/layout/panelbar/routing/main.js b/vue-options-api-demos/layout/panelbar/routing/main.js
new file mode 100644
index 00000000..8632ea7b
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/routing/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue';
+import App from './main.vue';
+import router from './index.js';
+
+createApp(App).use(router).mount('#app');
diff --git a/vue-options-api-demos/layout/panelbar/routing/main.vue b/vue-options-api-demos/layout/panelbar/routing/main.vue
new file mode 100644
index 00000000..f461ec42
--- /dev/null
+++ b/vue-options-api-demos/layout/panelbar/routing/main.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/splitter/events/Logger.vue b/vue-options-api-demos/layout/splitter/events/Logger.vue
new file mode 100644
index 00000000..833738a1
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
{{ title }}
+
+ {{ events.length - idx }}. {{ event }}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/splitter/events/main.js b/vue-options-api-demos/layout/splitter/events/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/splitter/events/main.vue b/vue-options-api-demos/layout/splitter/events/main.vue
new file mode 100644
index 00000000..b3c153c4
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/events/main.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
Inner splitter / left pane
+
Resizable and collapsible.
+
+
+
+
+
Inner splitter / center pane
+
Resizable only.
+
+
+
+
+
Inner splitter / right pane
+
Resizable and collapsible.
+
+
+
+
+
+
+
Outer splitter / Middle pane
+
Resizable only.
+
+
+
+
+
Outer splitter / Middle pane
+
Resizable only.
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/splitter/events/styles.css b/vue-options-api-demos/layout/splitter/events/styles.css
new file mode 100644
index 00000000..5bcfa632
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/events/styles.css
@@ -0,0 +1,20 @@
+.pane-content {
+ padding: 0 10px;
+}
+
+h3 {
+ font-size: 1.2em;
+ margin: 10px 0;
+ padding: 0;
+}
+
+h4 {
+ font-size: 1em;
+ margin: 10px 0;
+ padding: 0;
+}
+
+p {
+ margin: 0;
+ padding: 0;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/splitter/keyboard/main.js b/vue-options-api-demos/layout/splitter/keyboard/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/splitter/keyboard/main.vue b/vue-options-api-demos/layout/splitter/keyboard/main.vue
new file mode 100644
index 00000000..a4d76933
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/keyboard/main.vue
@@ -0,0 +1,12 @@
+
+
+ Vue component
+
+
+
+
diff --git a/vue-options-api-demos/layout/splitter/keyboard/styles.css b/vue-options-api-demos/layout/splitter/keyboard/styles.css
new file mode 100644
index 00000000..15616aa3
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/keyboard/styles.css
@@ -0,0 +1,2 @@
+.k-splitter + .k-splitter { margin: 20px 0 0; }
+h3 { font-size: 1.2em; padding: 10px; }
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/splitter/orientation/main.js b/vue-options-api-demos/layout/splitter/orientation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/orientation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/splitter/orientation/main.vue b/vue-options-api-demos/layout/splitter/orientation/main.vue
new file mode 100644
index 00000000..eb7985d9
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/orientation/main.vue
@@ -0,0 +1,88 @@
+
+ Horizontal orientation:
+
+
+
+
Left pane
+
Resizable and collapsible.
+
+
+
+
+
Center pane
+
Resizable only.
+
+
+
+
+
Right pane
+
Resizable and collapsible.
+
+
+
+
+ Vertical orientation:
+
+
+
+
Top pane
+
Resizable and collapsible.
+
+
+
+
+
Center pane
+
Resizable only.
+
+
+
+
+
Bottom pane
+
Resizable and collapsible.
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/splitter/orientation/styles.css b/vue-options-api-demos/layout/splitter/orientation/styles.css
new file mode 100644
index 00000000..caf5133b
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/orientation/styles.css
@@ -0,0 +1,10 @@
+h3 {
+ font-size: 1.2em;
+ margin: 10px 0;
+ padding: 0;
+}
+
+p {
+ margin: 0;
+ padding: 0;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/splitter/overview/basic/main.js b/vue-options-api-demos/layout/splitter/overview/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/overview/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/splitter/overview/basic/main.vue b/vue-options-api-demos/layout/splitter/overview/basic/main.vue
new file mode 100644
index 00000000..47294956
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/overview/basic/main.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
Inner splitter / left pane
+
Resizable and collapsible.
+
+
+
+
+
Inner splitter / center pane
+
Resizable only.
+
+
+
+
+
Inner splitter / right pane
+
Resizable and collapsible.
+
+
+
+
+
+
+
Outer splitter / Middle pane
+
Resizable only.
+
+
+
+
+
Outer splitter / Middle pane
+
Resizable only.
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/splitter/overview/basic/styles.css b/vue-options-api-demos/layout/splitter/overview/basic/styles.css
new file mode 100644
index 00000000..019839d9
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/overview/basic/styles.css
@@ -0,0 +1,3 @@
+.pane-content { padding: 0 10px; }
+h3 { font-size: 1.2em; margin: 10px 0; padding: 0; }
+p { margin: 0; padding: 0; }
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/splitter/panes/collapsing/main.js b/vue-options-api-demos/layout/splitter/panes/collapsing/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/panes/collapsing/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/splitter/panes/collapsing/main.vue b/vue-options-api-demos/layout/splitter/panes/collapsing/main.vue
new file mode 100644
index 00000000..7ff60574
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/panes/collapsing/main.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
Sidebar content
+
Collapsible. Non-resizable. Size of 200px.
+
+
+
+
+
Main content
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/splitter/panes/collapsing/styles.css b/vue-options-api-demos/layout/splitter/panes/collapsing/styles.css
new file mode 100644
index 00000000..a6e10809
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/panes/collapsing/styles.css
@@ -0,0 +1,9 @@
+h3 {
+ font-size: 1.2em;
+ padding: 10px;
+}
+
+p {
+ margin: 0;
+ padding: 0 10px;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/splitter/panes/dimensions/main.js b/vue-options-api-demos/layout/splitter/panes/dimensions/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/panes/dimensions/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/splitter/panes/dimensions/main.vue b/vue-options-api-demos/layout/splitter/panes/dimensions/main.vue
new file mode 100644
index 00000000..70fd8b83
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/panes/dimensions/main.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
Left pane
+
Resizable. Minimum width of 5%.
+
+
+
+
+
Center pane
+
Resizable only.
+
+
+
+
+
Right pane
+
Resizable.
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/splitter/panes/dimensions/styles.css b/vue-options-api-demos/layout/splitter/panes/dimensions/styles.css
new file mode 100644
index 00000000..a6e10809
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/panes/dimensions/styles.css
@@ -0,0 +1,9 @@
+h3 {
+ font-size: 1.2em;
+ padding: 10px;
+}
+
+p {
+ margin: 0;
+ padding: 0 10px;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/splitter/panes/resizing/main.js b/vue-options-api-demos/layout/splitter/panes/resizing/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/panes/resizing/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/splitter/panes/resizing/main.vue b/vue-options-api-demos/layout/splitter/panes/resizing/main.vue
new file mode 100644
index 00000000..a63f5af0
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/panes/resizing/main.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
Left pane
+
Resizable. Default size of 200px.
+
+
+
+
+
Center pane
+
Resizable only.
+
+
+
+
+
Right pane
+
Non-resizable. Size of 20%.
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/splitter/panes/resizing/styles.css b/vue-options-api-demos/layout/splitter/panes/resizing/styles.css
new file mode 100644
index 00000000..a6e10809
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/panes/resizing/styles.css
@@ -0,0 +1,9 @@
+h3 {
+ font-size: 1.2em;
+ padding: 10px;
+}
+
+p {
+ margin: 0;
+ padding: 0 10px;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/splitter/panes/scrolling/main.js b/vue-options-api-demos/layout/splitter/panes/scrolling/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/panes/scrolling/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/splitter/panes/scrolling/main.vue b/vue-options-api-demos/layout/splitter/panes/scrolling/main.vue
new file mode 100644
index 00000000..71042648
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/panes/scrolling/main.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
Sidebar content
+ Item 1
+ Item 2
+ Item 3
+ Item 4
+ Item 5
+ Item 6
+ Item 7
+ Item 8
+ Item 9
+ Item 10
+ Item 11
+ Item 12
+ Item 13
+ Item 14
+ Item 15
+ Item 16
+ Item 17
+ Item 18
+ Item 19
+ Item 20
+
+
+
+
+
Main content
+
+ What is Lorem Ipsum?
+ Lorem Ipsum is simply dummy text of the printing and typesetting
+ industry. Lorem Ipsum has been the industry's standard dummy text ever
+ since the 1500s, when an unknown printer took a galley of type and
+ scrambled it to make a type specimen book. It has survived not only
+ five centuries, but also the leap into electronic typesetting,
+ remaining essentially unchanged. It was popularised in the 1960s with
+ the release of Letraset sheets containing Lorem Ipsum passages, and
+ more recently with desktop publishing software like Aldus PageMaker
+ including versions of Lorem Ipsum.
+
+
+ Why do we use it?
+ It is a long established fact that a reader will be distracted by the
+ readable content of a page when looking at its layout. The point of
+ using Lorem Ipsum is that it has a more-or-less normal distribution of
+ letters, as opposed to using 'Content here, content here', making it
+ look like readable English. Many desktop publishing packages and web
+ page editors now use Lorem Ipsum as their default model text, and a
+ search for 'lorem ipsum' will uncover many web sites still in their
+ infancy. Various versions have evolved over the years, sometimes by
+ accident, sometimes on purpose (injected humour and the like).
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/splitter/panes/scrolling/styles.css b/vue-options-api-demos/layout/splitter/panes/scrolling/styles.css
new file mode 100644
index 00000000..5bcfa632
--- /dev/null
+++ b/vue-options-api-demos/layout/splitter/panes/scrolling/styles.css
@@ -0,0 +1,20 @@
+.pane-content {
+ padding: 0 10px;
+}
+
+h3 {
+ font-size: 1.2em;
+ margin: 10px 0;
+ padding: 0;
+}
+
+h4 {
+ font-size: 1em;
+ margin: 10px 0;
+ padding: 0;
+}
+
+p {
+ margin: 0;
+ padding: 0;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/stacklayout/gaps/main.js b/vue-options-api-demos/layout/stacklayout/gaps/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/gaps/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stacklayout/gaps/main.vue b/vue-options-api-demos/layout/stacklayout/gaps/main.vue
new file mode 100644
index 00000000..19ebf025
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/gaps/main.vue
@@ -0,0 +1,43 @@
+
+
+
+
diff --git a/vue-options-api-demos/layout/stacklayout/gaps/styles.css b/vue-options-api-demos/layout/stacklayout/gaps/styles.css
new file mode 100644
index 00000000..3677a955
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/gaps/styles.css
@@ -0,0 +1,23 @@
+.example-wrapper {
+ width: 300px;
+ margin: 0 auto;
+ box-shadow: 0px 10px 20px #00000029;
+ border-radius: 30px;
+}
+.page { padding: 20px 10px; }
+.content {
+ background: #F9F9F9;
+ border-radius: 30px 30px 0 0;
+ height: 450px;
+}
+.k-hstack { height: 50%; }
+.k-vstack { height: 100%; }
+.box { padding: 4px; }
+.first { background-color: #fae47a; }
+.second { background-color: #fbd17f; }
+.third { background-color: #f5bf8b; }
+.fourth { background-color: #ebaa79; }
+.k-flex-10 { flex: 1 1 10%; }
+.k-flex-20 { flex: 1 1 20%; }
+.k-flex-30 { flex: 1 1 30%; }
+.k-flex-40 { flex: 1 1 40%; }
diff --git a/vue-options-api-demos/layout/stacklayout/horizontalalign/main.js b/vue-options-api-demos/layout/stacklayout/horizontalalign/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/horizontalalign/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stacklayout/horizontalalign/main.vue b/vue-options-api-demos/layout/stacklayout/horizontalalign/main.vue
new file mode 100644
index 00000000..78459683
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/horizontalalign/main.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+ Box
+ Box
+ Box
+ Box
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/stacklayout/horizontalalign/styles.css b/vue-options-api-demos/layout/stacklayout/horizontalalign/styles.css
new file mode 100644
index 00000000..e9f6d6f2
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/horizontalalign/styles.css
@@ -0,0 +1,18 @@
+.example-wrapper {
+ width: 300px;
+ margin: 0 auto;
+ box-shadow: 0px 10px 20px #00000029;
+ border-radius: 30px;
+}
+.page { padding: 20px 10px; }
+.content {
+ background: #F9F9F9;
+ border-radius: 30px 30px 0 0;
+ height: 450px;
+}
+.box { padding: 10px; }
+.first { background-color: #fae47a; }
+.second { background-color: #fbd17f; }
+.third { background-color: #f5bf8b; }
+.fourth { background-color: #ebaa79; }
+.k-dropdown { margin: 0px 20px 20px 0px; }
diff --git a/vue-options-api-demos/layout/stacklayout/nestedlayouts/main.js b/vue-options-api-demos/layout/stacklayout/nestedlayouts/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/nestedlayouts/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stacklayout/nestedlayouts/main.vue b/vue-options-api-demos/layout/stacklayout/nestedlayouts/main.vue
new file mode 100644
index 00000000..93fe4b79
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/nestedlayouts/main.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ Navigation
+ Content
+ TOC
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/stacklayout/nestedlayouts/styles.css b/vue-options-api-demos/layout/stacklayout/nestedlayouts/styles.css
new file mode 100644
index 00000000..00fd5a71
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/nestedlayouts/styles.css
@@ -0,0 +1,10 @@
+.box {
+ padding: 4px;
+ text-align: center;
+ vertical-align: center;
+}
+.header { background-color: #fae47a; }
+.nav { background-color: #fbd17f; }
+.content { background-color: #f5bf8b; }
+.toc { background-color: #ebaa79; }
+.footer { background-color: #e39a6a; }
diff --git a/vue-options-api-demos/layout/stacklayout/orientation/main.js b/vue-options-api-demos/layout/stacklayout/orientation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/orientation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stacklayout/orientation/main.vue b/vue-options-api-demos/layout/stacklayout/orientation/main.vue
new file mode 100644
index 00000000..a5d403c1
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/orientation/main.vue
@@ -0,0 +1,46 @@
+
+
+
+
diff --git a/vue-options-api-demos/layout/stacklayout/orientation/styles.css b/vue-options-api-demos/layout/stacklayout/orientation/styles.css
new file mode 100644
index 00000000..d50942cb
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/orientation/styles.css
@@ -0,0 +1,23 @@
+.example-wrapper {
+ width: 300px;
+ margin: 0 auto;
+ box-shadow: 0px 10px 20px #00000029;
+ border-radius: 30px;
+}
+.page { padding: 20px 10px; }
+.content {
+ background: #F9F9F9;
+ border-radius: 30px 30px 0 0;
+ height: 450px;
+}
+.k-hstack,
+.k-vstack { height: 100%; }
+.box { padding: 4px; }
+.first { background-color: #fae47a; }
+.second { background-color: #fbd17f; }
+.third { background-color: #f5bf8b; }
+.fourth { background-color: #ebaa79; }
+.k-flex-10 { flex: 1 1 10%; }
+.k-flex-20 { flex: 1 1 20%; }
+.k-flex-30 { flex: 1 1 30%; }
+.k-flex-40 { flex: 1 1 40%; }
diff --git a/vue-options-api-demos/layout/stacklayout/overview/main.js b/vue-options-api-demos/layout/stacklayout/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stacklayout/overview/main.vue b/vue-options-api-demos/layout/stacklayout/overview/main.vue
new file mode 100644
index 00000000..b675feb4
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/overview/main.vue
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+ Lindsey Mango
+ 34K followers
+
+
+
+
+
+ Photos by Rikonavt and by Ivana La on Unsplash
+
+
+
+
+ See more from Lindsey
+
+
+
+
+
+
+
+ Vincenzo Mays
+ 32K followers
+
+
+
+
+
+ Photos by Irene Strong and by the BlackRabbit on Unsplash
+
+
+
+
+ See more from Vicenzo
+
+
+
+
+
+
+
+ Marissa Webb
+ 36K followers
+
+
+
+
+
+ Photos by JJ Jordan and by Silvana Carlos on Unsplash
+
+
+
+
+ See more from Marissa
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/stacklayout/overview/styles.css b/vue-options-api-demos/layout/stacklayout/overview/styles.css
new file mode 100644
index 00000000..ea6da123
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/overview/styles.css
@@ -0,0 +1,30 @@
+.example-container {
+ margin: 0 auto;
+ max-width: 900px;
+}
+.title-stacklayout-overview {
+ font-size: 2em;
+ margin-block-start: 0.67em;
+ margin-block-end: 0.67em;
+ font-weight: bold;
+}
+.k-flex-30 { flex: 1 1 30%; }
+.k-flex-40 { flex: 1 1 40%; }
+.k-card-cover {
+ object-fit: cover;
+ width: 100%;
+ height: 375px;
+}
+.k-card .k-card-body { padding: 5px 8px; }
+.photo-text {
+ text-align: right;
+ font-size: 10px;
+ font-style: italic;
+}
+@media only screen and (max-width: 890px) {
+ .k-card-title { font-size: 18px; }
+}
+@media only screen and (max-width: 760px) {
+ .k-card-title,
+ .k-card-subtitle { display: none; }
+}
diff --git a/vue-options-api-demos/layout/stacklayout/verticalalign/main.js b/vue-options-api-demos/layout/stacklayout/verticalalign/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/verticalalign/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stacklayout/verticalalign/main.vue b/vue-options-api-demos/layout/stacklayout/verticalalign/main.vue
new file mode 100644
index 00000000..a5eb7226
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/verticalalign/main.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+ Box
+ Box
+ Box
+ Box
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/stacklayout/verticalalign/styles.css b/vue-options-api-demos/layout/stacklayout/verticalalign/styles.css
new file mode 100644
index 00000000..4766c64b
--- /dev/null
+++ b/vue-options-api-demos/layout/stacklayout/verticalalign/styles.css
@@ -0,0 +1,18 @@
+.example-wrapper {
+ width: 300px;
+ margin: 0 auto;
+ box-shadow: 0px 10px 20px #00000029;
+ border-radius: 30px;
+}
+.page { padding: 20px 10px; }
+.content {
+ background: #F9F9F9;
+ border-radius: 30px 30px 0 0;
+ height: 450px;
+}
+.box { padding: 4px; }
+.first { background-color: #fae47a; }
+.second { background-color: #fbd17f; }
+.third { background-color: #f5bf8b; }
+.fourth { background-color: #ebaa79; }
+.k-dropdown { margin: 0px 20px 20px 0px; }
diff --git a/vue-options-api-demos/layout/stepper/custom-rendering/main.js b/vue-options-api-demos/layout/stepper/custom-rendering/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/custom-rendering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stepper/custom-rendering/main.vue b/vue-options-api-demos/layout/stepper/custom-rendering/main.vue
new file mode 100644
index 00000000..29333d5e
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/custom-rendering/main.vue
@@ -0,0 +1,148 @@
+
+
+
+
+
+ props.onChange(e)">
+
+ {{ props.emoji }}
+
+
+ {{ props.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ props.label }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/stepper/display-modes/main.js b/vue-options-api-demos/layout/stepper/display-modes/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/display-modes/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stepper/display-modes/main.vue b/vue-options-api-demos/layout/stepper/display-modes/main.vue
new file mode 100644
index 00000000..d269f926
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/display-modes/main.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
Steps with icons and labels
+
+
+
+
Steps with custom text
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/stepper/events/Logger.vue b/vue-options-api-demos/layout/stepper/events/Logger.vue
new file mode 100644
index 00000000..aa04a80b
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/stepper/events/main.js b/vue-options-api-demos/layout/stepper/events/main.js
new file mode 100644
index 00000000..1f1c6c86
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/events/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
+
diff --git a/vue-options-api-demos/layout/stepper/events/main.vue b/vue-options-api-demos/layout/stepper/events/main.vue
new file mode 100644
index 00000000..d1170c75
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/events/main.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/stepper/getting-started/main.js b/vue-options-api-demos/layout/stepper/getting-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/getting-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stepper/getting-started/main.vue b/vue-options-api-demos/layout/stepper/getting-started/main.vue
new file mode 100644
index 00000000..2b606c5f
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/getting-started/main.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/stepper/keyboard-navigation/main.js b/vue-options-api-demos/layout/stepper/keyboard-navigation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/keyboard-navigation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stepper/keyboard-navigation/main.vue b/vue-options-api-demos/layout/stepper/keyboard-navigation/main.vue
new file mode 100644
index 00000000..e6a5d2dd
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/keyboard-navigation/main.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/stepper/linear/main.js b/vue-options-api-demos/layout/stepper/linear/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/linear/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stepper/linear/main.vue b/vue-options-api-demos/layout/stepper/linear/main.vue
new file mode 100644
index 00000000..34498244
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/linear/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/stepper/orientation/main.js b/vue-options-api-demos/layout/stepper/orientation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/orientation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stepper/orientation/main.vue b/vue-options-api-demos/layout/stepper/orientation/main.vue
new file mode 100644
index 00000000..e58b7b2a
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/orientation/main.vue
@@ -0,0 +1,67 @@
+
+
+
Change the orientation:
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/stepper/types/main.js b/vue-options-api-demos/layout/stepper/types/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/types/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stepper/types/main.vue b/vue-options-api-demos/layout/stepper/types/main.vue
new file mode 100644
index 00000000..4e48e7d5
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/types/main.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/stepper/validation/basic/main.js b/vue-options-api-demos/layout/stepper/validation/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/validation/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stepper/validation/basic/main.vue b/vue-options-api-demos/layout/stepper/validation/basic/main.vue
new file mode 100644
index 00000000..cedc5855
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/validation/basic/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/stepper/validation/icons/main.js b/vue-options-api-demos/layout/stepper/validation/icons/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/validation/icons/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/stepper/validation/icons/main.vue b/vue-options-api-demos/layout/stepper/validation/icons/main.vue
new file mode 100644
index 00000000..cdcc915b
--- /dev/null
+++ b/vue-options-api-demos/layout/stepper/validation/icons/main.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tabstrip/configuration/main.js b/vue-options-api-demos/layout/tabstrip/configuration/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/configuration/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tabstrip/configuration/main.vue b/vue-options-api-demos/layout/tabstrip/configuration/main.vue
new file mode 100644
index 00000000..184e173d
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/configuration/main.vue
@@ -0,0 +1,47 @@
+
+
+
+ Paris is the capital and most populous city of France.
+
+ The City of New York, often called New York City or simply New York, is
+ the most populous city in the United States.
+
+ Tallinn is the capital and largest city of Estonia.
+
+
+
+
diff --git a/vue-options-api-demos/layout/tabstrip/events/Logger.vue b/vue-options-api-demos/layout/tabstrip/events/Logger.vue
new file mode 100644
index 00000000..d0ed6682
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+ {{ events.length - idx }}. {{ event }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tabstrip/events/main.js b/vue-options-api-demos/layout/tabstrip/events/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tabstrip/events/main.vue b/vue-options-api-demos/layout/tabstrip/events/main.vue
new file mode 100644
index 00000000..07a34d77
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/events/main.vue
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+
+
17ºC
+
Rainy weather in Paris.
+
+
City info
+
+ Paris is the capital and most populous city of France. It has an area
+ of 105 square kilometres (41 square miles) and a population in 2013 of
+ 2,229,621 within its administrative limits. The city is both a commune
+ and department, and forms the centre and headquarters of the
+ Île-de-France, or Paris Region, which has an area of 12,012 square
+ kilometres (4,638 square miles) and a population in 2014 of
+ 12,005,077, comprising 18.2 percent of the population of France.
+
+
+
+
+
+
+
+
+
+
29ºC
+
Sunny weather in New York.
+
+
City info
+
+ The City of New York, often called New York City or simply New York,
+ is the most populous city in the United States. With an estimated 2015
+ population of 8,550,405 distributed over a land area of just 305
+ square miles (790 km2), New York City is also the most densely
+ populated major city in the United States. Located at the southern tip
+ of the state of New York, the city is the center of the New York
+ metropolitan area, one of the most populous urban agglomerations in
+ the world.
+
+
+ A global power city, New York City exerts a significant impact upon
+ commerce, finance, media, art, fashion, research, technology,
+ education, and entertainment, its fast pace defining the term New York
+ minute. Home to the headquarters of the United Nations, New York is an
+ important center for international diplomacy and has been described as
+ the cultural and financial capital of the world.
+
+
+
+
+
+
+
+
+
+
21ºC
+
Sunny weather in Tallin.
+
+
City info
+
+ Tallinn is the capital and largest city of Estonia. It is situated on
+ the northern coast of the country, on the shore of the Gulf of
+ Finland, 80 km (50 mi) south of Helsinki, east of Stockholm and west
+ of Saint Petersburg. From the 13th century until 1918 (and briefly
+ during the Nazi occupation of Estonia from 1941 to 1944), the city was
+ known as Reval. Tallinn occupies an area of 159.2 km2 (61.5 sq mi) and
+ has a population of 443,894. Approximately 32% of Estonia's total
+ population lives in Tallinn.
+
+
+ Tallinn was founded in 1248, but the earliest human settlements are
+ over 5,000 years old, making it one of the oldest capital cities of
+ Northern Europe. Due to its strategic location, the city became a
+ major trade hub, especially from the 14th to the 16th century, when it
+ grew in importance as part of the Hanseatic League.
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tabstrip/keyboard/main.js b/vue-options-api-demos/layout/tabstrip/keyboard/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tabstrip/keyboard/main.vue b/vue-options-api-demos/layout/tabstrip/keyboard/main.vue
new file mode 100644
index 00000000..671e6578
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/keyboard/main.vue
@@ -0,0 +1,103 @@
+
+
+
+ Layout Settings
+ TabPosition:
+
+
+
+
+
+
+
17ºC
+
Rainy weather in Paris.
+
+
+
+
+
29ºC
+
Sunny weather in New York.
+
+
+
+
+
21ºC
+
Sunny weather in London.
+
+
+
+
+
16ºC
+
Cloudy weather in Moscow.
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tabstrip/overview/main.js b/vue-options-api-demos/layout/tabstrip/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tabstrip/overview/main.vue b/vue-options-api-demos/layout/tabstrip/overview/main.vue
new file mode 100644
index 00000000..1d0befe7
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/overview/main.vue
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
17ºC
+
Rainy weather in Paris.
+
+
City info
+
+ Paris is the capital and most populous city of France. It has an area
+ of 105 square kilometres (41 square miles) and a population in 2013 of
+ 2,229,621 within its administrative limits. The city is both a commune
+ and department, and forms the centre and headquarters of the
+ Île-de-France, or Paris Region, which has an area of 12,012 square
+ kilometres (4,638 square miles) and a population in 2014 of
+ 12,005,077, comprising 18.2 percent of the population of France.
+
+
+
+
+
+
+
+
+
+
29ºC
+
Sunny weather in New York.
+
+
City info
+
+ The City of New York, often called New York City or simply New York,
+ is the most populous city in the United States. With an estimated 2015
+ population of 8,550,405 distributed over a land area of just 305
+ square miles (790 km2), New York City is also the most densely
+ populated major city in the United States. Located at the southern tip
+ of the state of New York, the city is the center of the New York
+ metropolitan area, one of the most populous urban agglomerations in
+ the world.
+
+
+ A global power city, New York City exerts a significant impact upon
+ commerce, finance, media, art, fashion, research, technology,
+ education, and entertainment, its fast pace defining the term New York
+ minute. Home to the headquarters of the United Nations, New York is an
+ important center for international diplomacy and has been described as
+ the cultural and financial capital of the world.
+
+
+
+
+
+
+
+
+
+
21ºC
+
Sunny weather in Tallin.
+
+
City info
+
+ Tallinn is the capital and largest city of Estonia. It is situated on
+ the northern coast of the country, on the shore of the Gulf of
+ Finland, 80 km (50 mi) south of Helsinki, east of Stockholm and west
+ of Saint Petersburg. From the 13th century until 1918 (and briefly
+ during the Nazi occupation of Estonia from 1941 to 1944), the city was
+ known as Reval. Tallinn occupies an area of 159.2 km2 (61.5 sq mi) and
+ has a population of 443,894. Approximately 32% of Estonia's total
+ population lives in Tallinn.
+
+
+ Tallinn was founded in 1248, but the earliest human settlements are
+ over 5,000 years old, making it one of the oldest capital cities of
+ Northern Europe. Due to its strategic location, the city became a
+ major trade hub, especially from the 14th to the 16th century, when it
+ grew in importance as part of the Hanseatic League.
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tabstrip/size/main.js b/vue-options-api-demos/layout/tabstrip/size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tabstrip/size/main.vue b/vue-options-api-demos/layout/tabstrip/size/main.vue
new file mode 100644
index 00000000..05371ea5
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/size/main.vue
@@ -0,0 +1,103 @@
+
+
+
+ Layout Settings
+ TabStrip Size:
+
+
+
+
+
+
+
17ºC
+
Rainy weather in Paris.
+
+
+
+
+
29ºC
+
Sunny weather in New York.
+
+
+
+
+
21ºC
+
Sunny weather in London.
+
+
+
+
+
16ºC
+
Cloudy weather in Moscow.
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tabstrip/tabs/alignment/main.js b/vue-options-api-demos/layout/tabstrip/tabs/alignment/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/tabs/alignment/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tabstrip/tabs/alignment/main.vue b/vue-options-api-demos/layout/tabstrip/tabs/alignment/main.vue
new file mode 100644
index 00000000..21674b44
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/tabs/alignment/main.vue
@@ -0,0 +1,129 @@
+
+
+
+ Layout Settings
+ TabAlignment:
+
+
+
+
+
+
+ Paris is the capital and most populous city of France. It has an area
+ of 105 square kilometres (41 square miles) and a population in 2013 of
+ 2,229,621 within its administrative limits. The city is both a commune
+ and department, and forms the centre and headquarters of the
+ Île-de-France, or Paris Region, which has an area of 12,012 square
+ kilometres (4,638 square miles) and a population in 2014 of
+ 12,005,077, comprising 18.2 percent of the population of France.
+
+
+
+
+
+ The City of New York, often called New York City or simply New York,
+ is the most populous city in the United States. With an estimated
+ 2015 population of 8,550,405 distributed over a land area of just
+ 305 square miles (790 km2), New York City is also the most densely
+ populated major city in the United States. Located at the southern
+ tip of the state of New York, the city is the center of the New York
+ metropolitan area, one of the most populous urban agglomerations in
+ the world.
+
+
+ A global power city, New York City exerts a significant impact upon
+ commerce, finance, media, art, fashion, research, technology,
+ education, and entertainment, its fast pace defining the term New
+ York minute. Home to the headquarters of the United Nations, New
+ York is an important center for international diplomacy and has been
+ described as the cultural and financial capital of the world.
+
+
+
+
+
+
+ Tallinn is the capital and largest city of Estonia. It is situated
+ on the northern coast of the country, on the shore of the Gulf of
+ Finland, 80 km (50 mi) south of Helsinki, east of Stockholm and west
+ of Saint Petersburg. From the 13th century until 1918 (and briefly
+ during the Nazi occupation of Estonia from 1941 to 1944), the city
+ was known as Reval. Tallinn occupies an area of 159.2 km2 (61.5 sq
+ mi) and has a population of 443,894. Approximately 32% of Estonia's
+ total population lives in Tallinn.
+
+
+ Tallinn was founded in 1248, but the earliest human settlements are
+ over 5,000 years old, making it one of the oldest capital cities of
+ Northern Europe. Due to its strategic location, the city became a
+ major trade hub, especially from the 14th to the 16th century, when
+ it grew in importance as part of the Hanseatic League.
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tabstrip/tabs/closable-tabs/Title.vue b/vue-options-api-demos/layout/tabstrip/tabs/closable-tabs/Title.vue
new file mode 100644
index 00000000..a3892dd6
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/tabs/closable-tabs/Title.vue
@@ -0,0 +1,32 @@
+
+
+ {{content}}
+ onTabRemove(content)">
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tabstrip/tabs/closable-tabs/main.js b/vue-options-api-demos/layout/tabstrip/tabs/closable-tabs/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/tabs/closable-tabs/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tabstrip/tabs/closable-tabs/main.vue b/vue-options-api-demos/layout/tabstrip/tabs/closable-tabs/main.vue
new file mode 100644
index 00000000..37bb9581
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/tabs/closable-tabs/main.vue
@@ -0,0 +1,62 @@
+
+
+
+ Paris is the capital and most populous city of France.
+
+
+ onTabRemove(e)" />
+
+
+ The City of New York, often called New York City or simply New York, is
+ the most populous city in the United States.
+
+
+ Tallinn is the capital and largest city of Estonia.
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tabstrip/tabs/disabled/main.js b/vue-options-api-demos/layout/tabstrip/tabs/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/tabs/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tabstrip/tabs/disabled/main.vue b/vue-options-api-demos/layout/tabstrip/tabs/disabled/main.vue
new file mode 100644
index 00000000..b5989d18
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/tabs/disabled/main.vue
@@ -0,0 +1,48 @@
+
+
+
+ Tab 1 Content
+
+
+ Tab 2 Content
+
+
+ Tab 3 Content
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tabstrip/tabs/initial/main.js b/vue-options-api-demos/layout/tabstrip/tabs/initial/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/tabs/initial/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tabstrip/tabs/initial/main.vue b/vue-options-api-demos/layout/tabstrip/tabs/initial/main.vue
new file mode 100644
index 00000000..c458f224
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/tabs/initial/main.vue
@@ -0,0 +1,47 @@
+
+
+
+ Tab 1 Content
+
+
+ Tab 2 Content
+
+
+ Tab 3 Content
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tabstrip/tabs/position/main.js b/vue-options-api-demos/layout/tabstrip/tabs/position/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/tabs/position/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tabstrip/tabs/position/main.vue b/vue-options-api-demos/layout/tabstrip/tabs/position/main.vue
new file mode 100644
index 00000000..605c913d
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/tabs/position/main.vue
@@ -0,0 +1,125 @@
+
+
+
+ Layout Settings
+ TabPosition:
+
+
+
+
+
+
+ Paris is the capital and most populous city of France. It has an area
+ of 105 square kilometres (41 square miles) and a population in 2013 of
+ 2,229,621 within its administrative limits. The city is both a commune
+ and department, and forms the centre and headquarters of the
+ Île-de-France, or Paris Region, which has an area of 12,012 square
+ kilometres (4,638 square miles) and a population in 2014 of
+ 12,005,077, comprising 18.2 percent of the population of France.
+
+
+
+
+
+ The City of New York, often called New York City or simply New York,
+ is the most populous city in the United States. With an estimated
+ 2015 population of 8,550,405 distributed over a land area of just
+ 305 square miles (790 km2), New York City is also the most densely
+ populated major city in the United States. Located at the southern
+ tip of the state of New York, the city is the center of the New York
+ metropolitan area, one of the most populous urban agglomerations in
+ the world.
+
+
+ A global power city, New York City exerts a significant impact upon
+ commerce, finance, media, art, fashion, research, technology,
+ education, and entertainment, its fast pace defining the term New
+ York minute. Home to the headquarters of the United Nations, New
+ York is an important center for international diplomacy and has been
+ described as the cultural and financial capital of the world.
+
+
+
+
+
+
+ Tallinn is the capital and largest city of Estonia. It is situated
+ on the northern coast of the country, on the shore of the Gulf of
+ Finland, 80 km (50 mi) south of Helsinki, east of Stockholm and west
+ of Saint Petersburg. From the 13th century until 1918 (and briefly
+ during the Nazi occupation of Estonia from 1941 to 1944), the city
+ was known as Reval. Tallinn occupies an area of 159.2 km2 (61.5 sq
+ mi) and has a population of 443,894. Approximately 32% of Estonia's
+ total population lives in Tallinn.
+
+
+ Tallinn was founded in 1248, but the earliest human settlements are
+ over 5,000 years old, making it one of the oldest capital cities of
+ Northern Europe. Due to its strategic location, the city became a
+ major trade hub, especially from the 14th to the 16th century, when
+ it grew in importance as part of the Hanseatic League.
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tabstrip/tabs/titles/main.js b/vue-options-api-demos/layout/tabstrip/tabs/titles/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/tabs/titles/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tabstrip/tabs/titles/main.vue b/vue-options-api-demos/layout/tabstrip/tabs/titles/main.vue
new file mode 100644
index 00000000..02f4f3ee
--- /dev/null
+++ b/vue-options-api-demos/layout/tabstrip/tabs/titles/main.vue
@@ -0,0 +1,47 @@
+
+
+
+ Tab 1 Content
+
+
+ Tab 2 Content
+
+
+ Tab 3 Content
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tilelayout/add-remove/PageViews.vue b/vue-options-api-demos/layout/tilelayout/add-remove/PageViews.vue
new file mode 100644
index 00000000..59c15cc1
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/add-remove/PageViews.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tilelayout/add-remove/PopularPagesChart.vue b/vue-options-api-demos/layout/tilelayout/add-remove/PopularPagesChart.vue
new file mode 100644
index 00000000..89a178d1
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/add-remove/PopularPagesChart.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tilelayout/add-remove/VisitorsDonut.vue b/vue-options-api-demos/layout/tilelayout/add-remove/VisitorsDonut.vue
new file mode 100644
index 00000000..01d0e61a
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/add-remove/VisitorsDonut.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tilelayout/add-remove/WindowContent.vue b/vue-options-api-demos/layout/tilelayout/add-remove/WindowContent.vue
new file mode 100644
index 00000000..7278efd7
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/add-remove/WindowContent.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+ Select Chart Type:
+
+
+
+ Select Column Span:
+
+
+
+ Select Where the New Chart to be Inserted:
+
+
+
+
+ Insert
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tilelayout/add-remove/main.js b/vue-options-api-demos/layout/tilelayout/add-remove/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/add-remove/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tilelayout/add-remove/main.vue b/vue-options-api-demos/layout/tilelayout/add-remove/main.vue
new file mode 100644
index 00000000..bc0dfc98
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/add-remove/main.vue
@@ -0,0 +1,234 @@
+
+
+ {{ reorderable ? 'Save' : 'Edit' }}
+ Add New Tile
+
+
+ {{ props.headerText }}
+
+
+
+
+
+ Visitors
+
+
+
+
+
+ Most Visited Pages
+
+
+
+
+
+ Page Views
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tilelayout/add-remove/tilelayout-data.js b/vue-options-api-demos/layout/tilelayout/add-remove/tilelayout-data.js
new file mode 100644
index 00000000..968964dc
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/add-remove/tilelayout-data.js
@@ -0,0 +1,104 @@
+const conversions = [
+ {
+ value: 2000,
+ date: new Date(2020, 3, 1),
+ },
+ {
+ value: 80000,
+ date: new Date(2020, 3, 5),
+ },
+ {
+ value: 130000,
+ date: new Date(2020, 3, 10),
+ },
+ {
+ value: 170000,
+ date: new Date(2020, 3, 15),
+ },
+ {
+ value: 190000,
+ date: new Date(2020, 3, 20),
+ },
+ {
+ value: 190000,
+ date: new Date(2020, 3, 30),
+ },
+];
+const channelUsers = [
+ {
+ channel: "Organic Search",
+ conversion: 8232,
+ users: 70500,
+ },
+ {
+ channel: "Direct",
+ conversion: 6574,
+ users: 24900,
+ },
+ {
+ channel: "Referral",
+ conversion: 4932,
+ users: 20000,
+ },
+ {
+ channel: "Social Media",
+ conversion: 2928,
+ users: 19500,
+ },
+ {
+ channel: "Email",
+ conversion: 2456,
+ users: 18100,
+ },
+ {
+ channel: "Support",
+ conversion: 4234,
+ users: 2934,
+ },
+ {
+ channel: "Other",
+ conversion: 1172,
+ users: 16540,
+ },
+];
+const pageViews = [
+ {
+ value: 2000,
+ date: new Date(2020, 2, 30),
+ },
+ {
+ value: 80000,
+ date: new Date(2020, 3, 5),
+ },
+ {
+ value: 130000,
+ date: new Date(2020, 3, 10),
+ },
+ {
+ value: 170000,
+ date: new Date(2020, 3, 15),
+ },
+ {
+ value: 190000,
+ date: new Date(2020, 3, 20),
+ },
+ {
+ value: 150000,
+ date: new Date(2020, 3, 25),
+ },
+ {
+ value: 160000,
+ date: new Date(2020, 3, 30),
+ },
+];
+const visitors = [
+ {
+ value: 70,
+ type: "New",
+ },
+ {
+ value: 30,
+ type: "Returning",
+ },
+];
+export { conversions, channelUsers, pageViews, visitors };
diff --git a/vue-options-api-demos/layout/tilelayout/auto-flow/main.js b/vue-options-api-demos/layout/tilelayout/auto-flow/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/auto-flow/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tilelayout/auto-flow/main.vue b/vue-options-api-demos/layout/tilelayout/auto-flow/main.vue
new file mode 100644
index 00000000..fd24d433
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/auto-flow/main.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+ Tile 1
+
+
+ Tile 2
+
+
+ Tile 3
+
+
+ Tile 4
+
+
+ Tile 5
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tilelayout/configuration-unique/main.js b/vue-options-api-demos/layout/tilelayout/configuration-unique/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/configuration-unique/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tilelayout/configuration-unique/main.vue b/vue-options-api-demos/layout/tilelayout/configuration-unique/main.vue
new file mode 100644
index 00000000..6ce01733
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/configuration-unique/main.vue
@@ -0,0 +1,96 @@
+
+
+
+ Reorderable and resizable tile.
+
+
+ Reorderable and horizontally resizable only tile.
+
+
+ Reorderable and vertically resizable only tile.
+
+
+ Resizable only.
+
+
+ Non-resizable and non-reorderable.
+
+
+ Reorderable and resizable tile.
+
+ Tile 1
+ Tile 2
+ Tile 3
+ Tile 4
+ Tile 5
+ Tile 6
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tilelayout/configuration/main.js b/vue-options-api-demos/layout/tilelayout/configuration/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/configuration/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tilelayout/configuration/main.vue b/vue-options-api-demos/layout/tilelayout/configuration/main.vue
new file mode 100644
index 00000000..4e7e3c24
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/configuration/main.vue
@@ -0,0 +1,89 @@
+
+
+
+ Reorderable and resizable tile.
+
+
+ Reorderable and horizontally resizable only tile.
+
+
+ Reorderable and vertically resizable only tile.
+
+
+ Resizable only.
+
+
+ Non-resizable and non-reorderable.
+
+
+ Reorderable and resizable tile.
+
+ Tile 1
+ Tile 2
+ Tile 3
+ Tile 4
+ Tile 5
+ Tile 6
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tilelayout/events/Logger.vue b/vue-options-api-demos/layout/tilelayout/events/Logger.vue
new file mode 100644
index 00000000..7d9e1695
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/events/Logger.vue
@@ -0,0 +1,45 @@
+
+
+
{{ title }}
+
+
+ {{ events.length - idx }}. {{ event }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tilelayout/events/main.js b/vue-options-api-demos/layout/tilelayout/events/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tilelayout/events/main.vue b/vue-options-api-demos/layout/tilelayout/events/main.vue
new file mode 100644
index 00000000..3a377ae5
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/events/main.vue
@@ -0,0 +1,106 @@
+
+
+
+
+ Tile is 1st in order. It's on the first column. Spans across two columns
+ and one row.
+
+
+
+
+ Tile is 2nd in order. It's on the first column. Spans across one column
+ and one row.
+
+
+
+
+ Tile is 3th in order. It's on the first column. Spans across three
+ columns and one row.
+
+
+
+
+ Tile is 4th in order. It's on the second column and row unset. Spans
+ across one column and one row.
+
+
+
+
+ Tile is 5th in order. It's on the third column and row unset. Spans
+ across one column and two rows.
+
+
+ Tile 1
+ Tile 2
+ Tile 3
+ Tile 4
+ Tile 5
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tilelayout/overview/ConversionRate.vue b/vue-options-api-demos/layout/tilelayout/overview/ConversionRate.vue
new file mode 100644
index 00000000..0e6ffd65
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/overview/ConversionRate.vue
@@ -0,0 +1,33 @@
+
+
+
{{ visitorToCustomer }}%
+
Visitor to customer
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tilelayout/overview/ConversionsChart.vue b/vue-options-api-demos/layout/tilelayout/overview/ConversionsChart.vue
new file mode 100644
index 00000000..9a6b170c
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/overview/ConversionsChart.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tilelayout/overview/PageViews.vue b/vue-options-api-demos/layout/tilelayout/overview/PageViews.vue
new file mode 100644
index 00000000..7821feb7
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/overview/PageViews.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tilelayout/overview/PopularPagesChart.vue b/vue-options-api-demos/layout/tilelayout/overview/PopularPagesChart.vue
new file mode 100644
index 00000000..ee5878ca
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/overview/PopularPagesChart.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tilelayout/overview/UsersGrid.vue b/vue-options-api-demos/layout/tilelayout/overview/UsersGrid.vue
new file mode 100644
index 00000000..2187a20b
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/overview/UsersGrid.vue
@@ -0,0 +1,32 @@
+
+ {{dataItems.length}}
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tilelayout/overview/VisitorsDonut.vue b/vue-options-api-demos/layout/tilelayout/overview/VisitorsDonut.vue
new file mode 100644
index 00000000..19423f8e
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/overview/VisitorsDonut.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tilelayout/overview/main.js b/vue-options-api-demos/layout/tilelayout/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tilelayout/overview/main.vue b/vue-options-api-demos/layout/tilelayout/overview/main.vue
new file mode 100644
index 00000000..dcd0ab82
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/overview/main.vue
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2399
+
+
Active users right now
+
+
+
+
+
+ 55%
+
+
+ The percentage of all sessions on your site in which users viewed
+ only a single page.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tilelayout/overview/tilelayout-data.js b/vue-options-api-demos/layout/tilelayout/overview/tilelayout-data.js
new file mode 100644
index 00000000..cb0d4e13
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/overview/tilelayout-data.js
@@ -0,0 +1,78 @@
+const conversions = [{
+ value: 2000,
+ date: new Date(2020, 3, 1)
+ }, {
+ value: 80000,
+ date: new Date(2020, 3, 5)
+ }, {
+ value: 130000,
+ date: new Date(2020, 3, 10)
+ }, {
+ value: 170000,
+ date: new Date(2020, 3, 15)
+ }, {
+ value: 190000,
+ date: new Date(2020, 3, 20)
+ }, {
+ value: 190000,
+ date: new Date(2020, 3, 30)
+ }];
+ const channelUsers = [{
+ channel: "Organic Search",
+ conversion: 8232,
+ users: 70500
+ }, {
+ channel: "Direct",
+ conversion: 6574,
+ users: 24900
+ }, {
+ channel: "Referral",
+ conversion: 4932,
+ users: 20000
+ }, {
+ channel: "Social Media",
+ conversion: 2928,
+ users: 19500
+ }, {
+ channel: "Email",
+ conversion: 2456,
+ users: 18100
+ }, {
+ channel: "Support",
+ conversion: 4234,
+ users: 2934
+ }, {
+ channel: "Other",
+ conversion: 1172,
+ users: 16540
+ }];
+ const pageViews = [{
+ value: 2000,
+ date: new Date(2020, 2, 30)
+ }, {
+ value: 80000,
+ date: new Date(2020, 3, 5)
+ }, {
+ value: 130000,
+ date: new Date(2020, 3, 10)
+ }, {
+ value: 170000,
+ date: new Date(2020, 3, 15)
+ }, {
+ value: 190000,
+ date: new Date(2020, 3, 20)
+ }, {
+ value: 150000,
+ date: new Date(2020, 3, 25)
+ }, {
+ value: 160000,
+ date: new Date(2020, 3, 30)
+ }];
+ const visitors = [{
+ value: 70,
+ type: "New"
+ }, {
+ value: 30,
+ type: "Returning"
+ }];
+ export { conversions, channelUsers, pageViews, visitors };
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/tilelayout/tiles/controlled-mode/main.js b/vue-options-api-demos/layout/tilelayout/tiles/controlled-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/tiles/controlled-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tilelayout/tiles/controlled-mode/main.vue b/vue-options-api-demos/layout/tilelayout/tiles/controlled-mode/main.vue
new file mode 100644
index 00000000..71fb7553
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/tiles/controlled-mode/main.vue
@@ -0,0 +1,76 @@
+
+
+
+ 1
+
+
+ 2
+
+
+ 3
+
+
+ 4
+
+
+ 5
+
+
+
+
diff --git a/vue-options-api-demos/layout/tilelayout/tiles/custom-header-body/main.js b/vue-options-api-demos/layout/tilelayout/tiles/custom-header-body/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/tiles/custom-header-body/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tilelayout/tiles/custom-header-body/main.vue b/vue-options-api-demos/layout/tilelayout/tiles/custom-header-body/main.vue
new file mode 100644
index 00000000..f5c1c1d8
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/tiles/custom-header-body/main.vue
@@ -0,0 +1,88 @@
+
+
+
+
+ Tile is 1st in order. It's on the first column. Spans across two columns
+ and one row.
+
+
+
+
+ Tile is 2nd in order. It's on the first column. Spans across one column
+ and one row.
+
+
+
+
+ Tile is 3th in order. It's on the first column. Spans across three
+ columns and one row.
+
+
+
+
+ Tile is 4th in order. It's on the second column and row unset. Spans
+ across one column and one row.
+
+
+
+
+ Tile is 5th in order. It's on the third column and row unset. Spans
+ across one column and two rows.
+
+
+ Tile 1
+ Tile 2
+ Tile 3
+ Tile 4
+ Tile 5
+
+
+
diff --git a/vue-options-api-demos/layout/tilelayout/tiles/custom-rendering/main.js b/vue-options-api-demos/layout/tilelayout/tiles/custom-rendering/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/tiles/custom-rendering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tilelayout/tiles/custom-rendering/main.vue b/vue-options-api-demos/layout/tilelayout/tiles/custom-rendering/main.vue
new file mode 100644
index 00000000..83451618
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/tiles/custom-rendering/main.vue
@@ -0,0 +1,78 @@
+
+
+
+
+ Tile is 1st in order. It's on the first column. Spans across two columns
+ and one row.
+
+
+
+
+ Tile is 2nd in order. It's on the first column. Spans across one column
+ and one row.
+
+
+
+
+ Tile is 3th in order. It's on the first column. Spans across three
+ columns and one row.
+
+
+
+
+ Tile is 4th in order. It's on the second column and row unset. Spans
+ across one column and one row.
+
+
+
+
+ Tile is 5th in order. It's on the third column and row unset. Spans
+ across one column and two rows.
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tilelayout/tiles/positions/main.js b/vue-options-api-demos/layout/tilelayout/tiles/positions/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/tiles/positions/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tilelayout/tiles/positions/main.vue b/vue-options-api-demos/layout/tilelayout/tiles/positions/main.vue
new file mode 100644
index 00000000..568571a8
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/tiles/positions/main.vue
@@ -0,0 +1,78 @@
+
+
+
+
+ Tile is 1st in order. It's on the first column. Spans across two columns
+ and one row.
+
+
+
+
+ Tile is 2nd in order. It's on the first column. Spans across one column
+ and one row.
+
+
+
+
+ Tile is 3th in order. It's on the first column. Spans across three
+ columns and one row.
+
+
+
+
+ Tile is 4th in order. It's on the second column and row unset. Spans
+ across one column and one row.
+
+
+
+
+ Tile is 5th in order. It's on the third column and row unset. Spans
+ across one column and two rows.
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/tilelayout/tiles/reordering/main.js b/vue-options-api-demos/layout/tilelayout/tiles/reordering/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/tiles/reordering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tilelayout/tiles/reordering/main.vue b/vue-options-api-demos/layout/tilelayout/tiles/reordering/main.vue
new file mode 100644
index 00000000..10fc0d4a
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/tiles/reordering/main.vue
@@ -0,0 +1,52 @@
+
+
+
+ Reorderable tile.
+
+
+ Reorderable tile.
+
+
+ Reorderable tile.
+
+
+
+
diff --git a/vue-options-api-demos/layout/tilelayout/tiles/resizing/main.js b/vue-options-api-demos/layout/tilelayout/tiles/resizing/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/tiles/resizing/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/tilelayout/tiles/resizing/main.vue b/vue-options-api-demos/layout/tilelayout/tiles/resizing/main.vue
new file mode 100644
index 00000000..768f67ad
--- /dev/null
+++ b/vue-options-api-demos/layout/tilelayout/tiles/resizing/main.vue
@@ -0,0 +1,68 @@
+
+
+
+ 1
+
+
+ 2
+
+
+ 3
+
+
+ 4
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/basic/AccountDetails.vue b/vue-options-api-demos/layout/wizard/basic/AccountDetails.vue
new file mode 100644
index 00000000..8ae89334
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/basic/AccountDetails.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/basic/FormInput.vue b/vue-options-api-demos/layout/wizard/basic/FormInput.vue
new file mode 100644
index 00000000..e9551d6f
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/basic/FormInput.vue
@@ -0,0 +1,90 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/basic/PersonalDetails.vue b/vue-options-api-demos/layout/wizard/basic/PersonalDetails.vue
new file mode 100644
index 00000000..d487cf61
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/basic/PersonalDetails.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/basic/Register.vue b/vue-options-api-demos/layout/wizard/basic/Register.vue
new file mode 100644
index 00000000..810d8d57
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/basic/Register.vue
@@ -0,0 +1,16 @@
+
+
+ Click on the "Register" button to complete your registration.
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/basic/main.js b/vue-options-api-demos/layout/wizard/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/wizard/basic/main.vue b/vue-options-api-demos/layout/wizard/basic/main.vue
new file mode 100644
index 00000000..fd995115
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/basic/main.vue
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Step {{ step + 1 }} of 3
+
+
+
+
+ Previous
+
+
+
+ {{ isLastStep ? 'Register' : 'Next' }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/basic/validators.js b/vue-options-api-demos/layout/wizard/basic/validators.js
new file mode 100644
index 00000000..b1fa8aa6
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/basic/validators.js
@@ -0,0 +1,83 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = (value) =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = (value) =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = (value) =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = (value) =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = (value) =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = (value) =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = (value) =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = (value) =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = (value) =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = (value) =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = (value) => (value ? '' : 'Color is required.');
+export const requiredValidator = (value) =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = (value) =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = (value) =>
+ value ? '' : 'Address is required.';
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = (values) => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.',
+ };
+};
diff --git a/vue-options-api-demos/layout/wizard/positioning/AccountDetails.vue b/vue-options-api-demos/layout/wizard/positioning/AccountDetails.vue
new file mode 100644
index 00000000..8ae89334
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/positioning/AccountDetails.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/positioning/FormInput.vue b/vue-options-api-demos/layout/wizard/positioning/FormInput.vue
new file mode 100644
index 00000000..e9551d6f
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/positioning/FormInput.vue
@@ -0,0 +1,90 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/positioning/PersonalDetails.vue b/vue-options-api-demos/layout/wizard/positioning/PersonalDetails.vue
new file mode 100644
index 00000000..d487cf61
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/positioning/PersonalDetails.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/positioning/Register.vue b/vue-options-api-demos/layout/wizard/positioning/Register.vue
new file mode 100644
index 00000000..51be3bf2
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/positioning/Register.vue
@@ -0,0 +1,17 @@
+
+
+ Click on the "Register" button to complete your registration.
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/positioning/main.js b/vue-options-api-demos/layout/wizard/positioning/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/positioning/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/wizard/positioning/main.vue b/vue-options-api-demos/layout/wizard/positioning/main.vue
new file mode 100644
index 00000000..cda5a8fb
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/positioning/main.vue
@@ -0,0 +1,173 @@
+
+ Change content position:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Step {{ step + 1 }} of 3
+
+
+
+
+ Previous
+
+
+
+ {{ isLastStep ? 'Register' : 'Next' }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/positioning/validators.js b/vue-options-api-demos/layout/wizard/positioning/validators.js
new file mode 100644
index 00000000..b1fa8aa6
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/positioning/validators.js
@@ -0,0 +1,83 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = (value) =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = (value) =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = (value) =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = (value) =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = (value) =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = (value) =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = (value) =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = (value) =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = (value) =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = (value) =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = (value) => (value ? '' : 'Color is required.');
+export const requiredValidator = (value) =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = (value) =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = (value) =>
+ value ? '' : 'Address is required.';
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = (values) => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.',
+ };
+};
diff --git a/vue-options-api-demos/layout/wizard/router/FormContent.vue b/vue-options-api-demos/layout/wizard/router/FormContent.vue
new file mode 100644
index 00000000..6c4043c2
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/router/FormContent.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/wizard/router/FormInput.vue b/vue-options-api-demos/layout/wizard/router/FormInput.vue
new file mode 100644
index 00000000..9b89ca9e
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/router/FormInput.vue
@@ -0,0 +1,82 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/router/Overview.vue b/vue-options-api-demos/layout/wizard/router/Overview.vue
new file mode 100644
index 00000000..570c3a65
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/router/Overview.vue
@@ -0,0 +1,13 @@
+
+
+
+
Overview
+
+
To complete your registration, please follow the next steps
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/router/Register.vue b/vue-options-api-demos/layout/wizard/router/Register.vue
new file mode 100644
index 00000000..6a8549fa
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/router/Register.vue
@@ -0,0 +1,13 @@
+
+
+
+
Register
+
+
Click on the "Register" button to complete your registration.
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/wizard/router/UserDetails.vue b/vue-options-api-demos/layout/wizard/router/UserDetails.vue
new file mode 100644
index 00000000..064a8c30
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/router/UserDetails.vue
@@ -0,0 +1,20 @@
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/layout/wizard/router/index.js b/vue-options-api-demos/layout/wizard/router/index.js
new file mode 100644
index 00000000..beea1b1b
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/router/index.js
@@ -0,0 +1,29 @@
+import { createWebHistory, createRouter } from "vue-router";
+import Overview from "./Overview";
+import UserDetails from "./UserDetails";
+import Register from "./Register";
+
+const routes = [
+ {
+ path: "/layout/wizard/routing/overview",
+ name: "Overview",
+ component: Overview
+ },
+ {
+ path: "/layout/wizard/routing/user-details",
+ name: "UserDetails",
+ component: UserDetails
+ },
+ {
+ path: "/layout/wizard/routing/register",
+ name: "Register",
+ component: Register
+ }
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes
+});
+
+export default router;
diff --git a/vue-options-api-demos/layout/wizard/router/main.js b/vue-options-api-demos/layout/wizard/router/main.js
new file mode 100644
index 00000000..b51f2405
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/router/main.js
@@ -0,0 +1,5 @@
+import { createApp } from "vue";
+import App from "./main.vue";
+import router from "./index.js";
+
+createApp(App).use(router).mount("#app");
diff --git a/vue-options-api-demos/layout/wizard/router/main.vue b/vue-options-api-demos/layout/wizard/router/main.vue
new file mode 100644
index 00000000..6eebf450
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/router/main.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+ Step {{ step + 1 }} of 3
+
+
+ Previous
+
+ {{ isLastStep ? 'Register' : 'Next' }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/AccountDetails.vue b/vue-options-api-demos/layout/wizard/validation/step/AccountDetails.vue
new file mode 100644
index 00000000..87854265
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/AccountDetails.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/CardSelector.vue b/vue-options-api-demos/layout/wizard/validation/step/CardSelector.vue
new file mode 100644
index 00000000..100f31f9
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/CardSelector.vue
@@ -0,0 +1,201 @@
+
+
+
+ {{ label }}
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/ErrorSummary.vue b/vue-options-api-demos/layout/wizard/validation/step/ErrorSummary.vue
new file mode 100644
index 00000000..d2d081b5
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/ErrorSummary.vue
@@ -0,0 +1,62 @@
+
+ Step1
+
+ {{ formErrors.username }}
+ {{ formErrors.email }}
+ {{ formErrors.password }}
+
+
+ Step2
+
+ Full Name: {{ formErrors.fullName }}
+
+ Country: {{ formErrors.countryselected }}
+
+ Gender: {{ formErrors.gender }}
+
+
+ Step3
+
+
+ Card Number: {{ formErrors.cardNumber }}
+
+ CVC code: {{ formErrors.cvc }}
+
+ Expire Date: {{ formErrors.expireDate }}
+
+
+ Card Holder: {{ formErrors.cardHolder }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/FormAutoComplete.vue b/vue-options-api-demos/layout/wizard/validation/step/FormAutoComplete.vue
new file mode 100644
index 00000000..39526b0c
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/FormAutoComplete.vue
@@ -0,0 +1,79 @@
+
+
+
+ {{ label }}
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/FormCheckbox.vue b/vue-options-api-demos/layout/wizard/validation/step/FormCheckbox.vue
new file mode 100644
index 00000000..a3b982f3
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/FormCheckbox.vue
@@ -0,0 +1,89 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/FormDateInput.vue b/vue-options-api-demos/layout/wizard/validation/step/FormDateInput.vue
new file mode 100644
index 00000000..67b4a198
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/FormDateInput.vue
@@ -0,0 +1,77 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/FormDatePicker.vue b/vue-options-api-demos/layout/wizard/validation/step/FormDatePicker.vue
new file mode 100644
index 00000000..2a332d1c
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/FormDatePicker.vue
@@ -0,0 +1,79 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/FormInput.vue b/vue-options-api-demos/layout/wizard/validation/step/FormInput.vue
new file mode 100644
index 00000000..e9551d6f
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/FormInput.vue
@@ -0,0 +1,90 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/FormMaskedTextBox.vue b/vue-options-api-demos/layout/wizard/validation/step/FormMaskedTextBox.vue
new file mode 100644
index 00000000..8f991820
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/FormMaskedTextBox.vue
@@ -0,0 +1,83 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/FormNumericTextBox.vue b/vue-options-api-demos/layout/wizard/validation/step/FormNumericTextBox.vue
new file mode 100644
index 00000000..f46568cc
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/FormNumericTextBox.vue
@@ -0,0 +1,79 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/FormRadioGroup.vue b/vue-options-api-demos/layout/wizard/validation/step/FormRadioGroup.vue
new file mode 100644
index 00000000..c52a637b
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/FormRadioGroup.vue
@@ -0,0 +1,104 @@
+
+
+
+ {{ label }}
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/FormTextArea.vue b/vue-options-api-demos/layout/wizard/validation/step/FormTextArea.vue
new file mode 100644
index 00000000..011196b5
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/FormTextArea.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/FormUpload.vue b/vue-options-api-demos/layout/wizard/validation/step/FormUpload.vue
new file mode 100644
index 00000000..f8f1645b
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/FormUpload.vue
@@ -0,0 +1,90 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/PaymentDetails.vue b/vue-options-api-demos/layout/wizard/validation/step/PaymentDetails.vue
new file mode 100644
index 00000000..de3c965f
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/PaymentDetails.vue
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/PersonalDetails.vue b/vue-options-api-demos/layout/wizard/validation/step/PersonalDetails.vue
new file mode 100644
index 00000000..3a418c5b
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/PersonalDetails.vue
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/main.js b/vue-options-api-demos/layout/wizard/validation/step/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/wizard/validation/step/main.vue b/vue-options-api-demos/layout/wizard/validation/step/main.vue
new file mode 100644
index 00000000..7cb1469a
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/main.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Step {{ step + 1 }} of 3
+
+
+
+
+ Previous
+
+
+
+ {{ isLastStep ? 'Submit' : 'Next' }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/step/validators.js b/vue-options-api-demos/layout/wizard/validation/step/validators.js
new file mode 100644
index 00000000..b1fa8aa6
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/step/validators.js
@@ -0,0 +1,83 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = (value) =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = (value) =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = (value) =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = (value) =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = (value) =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = (value) =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = (value) =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = (value) =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = (value) =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = (value) =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = (value) => (value ? '' : 'Color is required.');
+export const requiredValidator = (value) =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = (value) =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = (value) =>
+ value ? '' : 'Address is required.';
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = (values) => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.',
+ };
+};
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/AccountDetails.vue b/vue-options-api-demos/layout/wizard/validation/submit/AccountDetails.vue
new file mode 100644
index 00000000..c2621bfc
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/AccountDetails.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/CardSelector.vue b/vue-options-api-demos/layout/wizard/validation/submit/CardSelector.vue
new file mode 100644
index 00000000..3c933c91
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/CardSelector.vue
@@ -0,0 +1,201 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/ErrorSummary.vue b/vue-options-api-demos/layout/wizard/validation/submit/ErrorSummary.vue
new file mode 100644
index 00000000..d2d081b5
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/ErrorSummary.vue
@@ -0,0 +1,62 @@
+
+ Step1
+
+ {{ formErrors.username }}
+ {{ formErrors.email }}
+ {{ formErrors.password }}
+
+
+ Step2
+
+ Full Name: {{ formErrors.fullName }}
+
+ Country: {{ formErrors.countryselected }}
+
+ Gender: {{ formErrors.gender }}
+
+
+ Step3
+
+
+ Card Number: {{ formErrors.cardNumber }}
+
+ CVC code: {{ formErrors.cvc }}
+
+ Expire Date: {{ formErrors.expireDate }}
+
+
+ Card Holder: {{ formErrors.cardHolder }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormAutoComplete.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormAutoComplete.vue
new file mode 100644
index 00000000..39526b0c
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/FormAutoComplete.vue
@@ -0,0 +1,79 @@
+
+
+
+ {{ label }}
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormCheckbox.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormCheckbox.vue
new file mode 100644
index 00000000..d3438819
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/FormCheckbox.vue
@@ -0,0 +1,89 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormDateInput.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormDateInput.vue
new file mode 100644
index 00000000..67b4a198
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/FormDateInput.vue
@@ -0,0 +1,77 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormDatePicker.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormDatePicker.vue
new file mode 100644
index 00000000..6f6dfddc
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/FormDatePicker.vue
@@ -0,0 +1,79 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormInput.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormInput.vue
new file mode 100644
index 00000000..e9551d6f
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/FormInput.vue
@@ -0,0 +1,90 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormMaskedTextBox.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormMaskedTextBox.vue
new file mode 100644
index 00000000..8f991820
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/FormMaskedTextBox.vue
@@ -0,0 +1,83 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormNumericTextBox.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormNumericTextBox.vue
new file mode 100644
index 00000000..f46568cc
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/FormNumericTextBox.vue
@@ -0,0 +1,79 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormRadioGroup.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormRadioGroup.vue
new file mode 100644
index 00000000..1ab866bc
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/FormRadioGroup.vue
@@ -0,0 +1,106 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormTextArea.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormTextArea.vue
new file mode 100644
index 00000000..011196b5
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/FormTextArea.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/FormUpload.vue b/vue-options-api-demos/layout/wizard/validation/submit/FormUpload.vue
new file mode 100644
index 00000000..3e2c664d
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/FormUpload.vue
@@ -0,0 +1,90 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/PaymentDetails.vue b/vue-options-api-demos/layout/wizard/validation/submit/PaymentDetails.vue
new file mode 100644
index 00000000..922b898b
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/PaymentDetails.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/PersonalDetails.vue b/vue-options-api-demos/layout/wizard/validation/submit/PersonalDetails.vue
new file mode 100644
index 00000000..1fe82fac
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/PersonalDetails.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/main.js b/vue-options-api-demos/layout/wizard/validation/submit/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/main.vue b/vue-options-api-demos/layout/wizard/validation/submit/main.vue
new file mode 100644
index 00000000..4eff8af9
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/main.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Step {{ step + 1 }} of 3
+
+
+
+
+ Previous
+
+
+
+ {{ isLastStep ? 'Submit' : 'Next' }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/layout/wizard/validation/submit/validators.js b/vue-options-api-demos/layout/wizard/validation/submit/validators.js
new file mode 100644
index 00000000..b1fa8aa6
--- /dev/null
+++ b/vue-options-api-demos/layout/wizard/validation/submit/validators.js
@@ -0,0 +1,83 @@
+import { getter } from '@progress/kendo-vue-common';
+
+const emailRegex = new RegExp(/\S+@\S+\.\S+/);
+const phoneRegex = new RegExp(/^[0-9 ()+-]+$/);
+const ccardRegex = new RegExp(/^[0-9-]+$/);
+const cvcRegex = new RegExp(/^[0-9]+$/);
+
+export const termsValidator = (value) =>
+ value ? '' : "It's required to agree with Terms and Conditions.";
+export const emailValidator = (value) =>
+ !value
+ ? 'Email field is required.'
+ : emailRegex.test(value)
+ ? ''
+ : 'Email is not in a valid format.';
+export const nameValidator = (value) =>
+ !value
+ ? 'Full Name is required'
+ : value.length < 7
+ ? 'Full Name should be at least 7 characters long.'
+ : '';
+export const userNameValidator = (value) =>
+ !value
+ ? 'User Name is required'
+ : value.length < 5
+ ? 'User name should be at least 5 characters long.'
+ : '';
+export const phoneValidator = (value) =>
+ !value
+ ? 'Phone number is required.'
+ : phoneRegex.test(value)
+ ? ''
+ : 'Not a valid phone number.';
+export const cardValidator = (value) =>
+ !value
+ ? 'Credit card number is required. '
+ : ccardRegex.test(value)
+ ? ''
+ : 'Not a valid credit card number format.';
+export const cvcValidator = (value) =>
+ !value
+ ? 'CVC code is required,'
+ : cvcRegex.test(value) || value.length !== 3
+ ? ''
+ : 'Not a valid CVC code format.';
+export const guestsValidator = (value) =>
+ !value
+ ? 'Number of guests is required'
+ : value <= 5
+ ? ''
+ : 'Maximum 5 guests';
+export const nightsValidator = (value) =>
+ value ? '' : 'Number of Nights is required.';
+export const arrivalDateValidator = (value) =>
+ value ? '' : 'Arrival Date is required.';
+export const colorValidator = (value) => (value ? '' : 'Color is required.');
+export const requiredValidator = (value) =>
+ value ? '' : 'Error: This field is required.';
+export const passwordValidator = (value) =>
+ value && value.length > 8 ? '' : 'Password must be at least 8 symbols.';
+export const addressValidator = (value) =>
+ value ? '' : 'Address is required.';
+
+const userNameGetter = getter('username');
+const emailGetter = getter('email');
+
+export const formValidator = (values) => {
+ const userName = userNameGetter(values);
+ const emailValue = emailGetter(values);
+
+ if (userName && emailValue && emailRegex.test(emailValue)) {
+ return {};
+ }
+
+ return {
+ VALIDATION_SUMMARY: 'Please fill in the following fields.',
+ ['username']: !userName ? 'User Name is required.' : '',
+ ['email']:
+ emailValue && emailRegex.test(emailValue)
+ ? ''
+ : 'Email is required and should be in a valid format.',
+ };
+};
diff --git a/vue-options-api-demos/listbox/customization/main.js b/vue-options-api-demos/listbox/customization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listbox/customization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listbox/customization/main.vue b/vue-options-api-demos/listbox/customization/main.vue
new file mode 100644
index 00000000..bedf3c19
--- /dev/null
+++ b/vue-options-api-demos/listbox/customization/main.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
Not Discontinued
+
+
+
+
+
+
+ {{
+ props.dataItem.ProductName
+ }}
+
+ Price: {{ props.dataItem.UnitPrice }}$
+
+
+
+
+
+
Discontinued
+
+
+
+ {{
+ props.dataItem.ProductName
+ }}
+
+ Price: {{ props.dataItem.UnitPrice }}$
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/listbox/customization/products.json b/vue-options-api-demos/listbox/customization/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/listbox/customization/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/listbox/drag-and-drop/main.js b/vue-options-api-demos/listbox/drag-and-drop/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listbox/drag-and-drop/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listbox/drag-and-drop/main.vue b/vue-options-api-demos/listbox/drag-and-drop/main.vue
new file mode 100644
index 00000000..807f980d
--- /dev/null
+++ b/vue-options-api-demos/listbox/drag-and-drop/main.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/listbox/drag-and-drop/products.json b/vue-options-api-demos/listbox/drag-and-drop/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/listbox/drag-and-drop/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/listbox/get-started/data.js b/vue-options-api-demos/listbox/get-started/data.js
new file mode 100644
index 00000000..d5d92bba
--- /dev/null
+++ b/vue-options-api-demos/listbox/get-started/data.js
@@ -0,0 +1,30 @@
+export const data = [
+ {
+ name: 'Steven White',
+ selected: true
+ },
+ {
+ name: 'Nancy King',
+ selected: false
+ },
+ {
+ name: 'Nancy Davolio',
+ selected: false
+ },
+ {
+ name: 'Robert Davolio',
+ selected: false
+ },
+ {
+ name: 'Michael Leverling',
+ selected: false
+ },
+ {
+ name: 'Andrew Callahan',
+ selected: false
+ },
+ {
+ name: 'Michael Suyama',
+ selected: false
+ }
+ ];
diff --git a/vue-options-api-demos/listbox/get-started/main.js b/vue-options-api-demos/listbox/get-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listbox/get-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listbox/get-started/main.vue b/vue-options-api-demos/listbox/get-started/main.vue
new file mode 100644
index 00000000..dace38e6
--- /dev/null
+++ b/vue-options-api-demos/listbox/get-started/main.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
Employees
+
+
+
+
+
+
+
+
Developers
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/listbox/messages/data.js b/vue-options-api-demos/listbox/messages/data.js
new file mode 100644
index 00000000..d5d92bba
--- /dev/null
+++ b/vue-options-api-demos/listbox/messages/data.js
@@ -0,0 +1,30 @@
+export const data = [
+ {
+ name: 'Steven White',
+ selected: true
+ },
+ {
+ name: 'Nancy King',
+ selected: false
+ },
+ {
+ name: 'Nancy Davolio',
+ selected: false
+ },
+ {
+ name: 'Robert Davolio',
+ selected: false
+ },
+ {
+ name: 'Michael Leverling',
+ selected: false
+ },
+ {
+ name: 'Andrew Callahan',
+ selected: false
+ },
+ {
+ name: 'Michael Suyama',
+ selected: false
+ }
+ ];
diff --git a/vue-options-api-demos/listbox/messages/es.json b/vue-options-api-demos/listbox/messages/es.json
new file mode 100644
index 00000000..5ea0b181
--- /dev/null
+++ b/vue-options-api-demos/listbox/messages/es.json
@@ -0,0 +1,11 @@
+{
+ "listbox": {
+ "moveUp": "Ascender",
+ "moveDown": "Мove hacia abajo",
+ "transferTo": "Transferir a",
+ "transferFrom": "Transferido de",
+ "transferAllTo": "Transferir todo a",
+ "transferAllFrom": "Transferir todo desde",
+ "remove": "Eliminar"
+ }
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/listbox/messages/main.js b/vue-options-api-demos/listbox/messages/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listbox/messages/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listbox/messages/main.vue b/vue-options-api-demos/listbox/messages/main.vue
new file mode 100644
index 00000000..7507ce60
--- /dev/null
+++ b/vue-options-api-demos/listbox/messages/main.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
+
Employees
+
+
+
+
+
+
+
+
Developers
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/listbox/multiple-lists/main.js b/vue-options-api-demos/listbox/multiple-lists/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listbox/multiple-lists/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listbox/multiple-lists/main.vue b/vue-options-api-demos/listbox/multiple-lists/main.vue
new file mode 100644
index 00000000..a08c6ad7
--- /dev/null
+++ b/vue-options-api-demos/listbox/multiple-lists/main.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
To Do
+
+
+
+
+
+
+
+
In Development
+
+
+
+
+
+
+
+
Shipped
+
+
+
+
+
+
diff --git a/vue-options-api-demos/listbox/overview/data.js b/vue-options-api-demos/listbox/overview/data.js
new file mode 100644
index 00000000..d5d92bba
--- /dev/null
+++ b/vue-options-api-demos/listbox/overview/data.js
@@ -0,0 +1,30 @@
+export const data = [
+ {
+ name: 'Steven White',
+ selected: true
+ },
+ {
+ name: 'Nancy King',
+ selected: false
+ },
+ {
+ name: 'Nancy Davolio',
+ selected: false
+ },
+ {
+ name: 'Robert Davolio',
+ selected: false
+ },
+ {
+ name: 'Michael Leverling',
+ selected: false
+ },
+ {
+ name: 'Andrew Callahan',
+ selected: false
+ },
+ {
+ name: 'Michael Suyama',
+ selected: false
+ }
+ ];
diff --git a/vue-options-api-demos/listbox/overview/main.js b/vue-options-api-demos/listbox/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listbox/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listbox/overview/main.vue b/vue-options-api-demos/listbox/overview/main.vue
new file mode 100644
index 00000000..dace38e6
--- /dev/null
+++ b/vue-options-api-demos/listbox/overview/main.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
Employees
+
+
+
+
+
+
+
+
Developers
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/listbox/rtl/data.js b/vue-options-api-demos/listbox/rtl/data.js
new file mode 100644
index 00000000..d5d92bba
--- /dev/null
+++ b/vue-options-api-demos/listbox/rtl/data.js
@@ -0,0 +1,30 @@
+export const data = [
+ {
+ name: 'Steven White',
+ selected: true
+ },
+ {
+ name: 'Nancy King',
+ selected: false
+ },
+ {
+ name: 'Nancy Davolio',
+ selected: false
+ },
+ {
+ name: 'Robert Davolio',
+ selected: false
+ },
+ {
+ name: 'Michael Leverling',
+ selected: false
+ },
+ {
+ name: 'Andrew Callahan',
+ selected: false
+ },
+ {
+ name: 'Michael Suyama',
+ selected: false
+ }
+ ];
diff --git a/vue-options-api-demos/listbox/rtl/main.js b/vue-options-api-demos/listbox/rtl/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listbox/rtl/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listbox/rtl/main.vue b/vue-options-api-demos/listbox/rtl/main.vue
new file mode 100644
index 00000000..33801b0a
--- /dev/null
+++ b/vue-options-api-demos/listbox/rtl/main.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
Employees
+
+
+
+
+
+
+
+
Developers
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/listbox/selection/data.js b/vue-options-api-demos/listbox/selection/data.js
new file mode 100644
index 00000000..d5d92bba
--- /dev/null
+++ b/vue-options-api-demos/listbox/selection/data.js
@@ -0,0 +1,30 @@
+export const data = [
+ {
+ name: 'Steven White',
+ selected: true
+ },
+ {
+ name: 'Nancy King',
+ selected: false
+ },
+ {
+ name: 'Nancy Davolio',
+ selected: false
+ },
+ {
+ name: 'Robert Davolio',
+ selected: false
+ },
+ {
+ name: 'Michael Leverling',
+ selected: false
+ },
+ {
+ name: 'Andrew Callahan',
+ selected: false
+ },
+ {
+ name: 'Michael Suyama',
+ selected: false
+ }
+ ];
diff --git a/vue-options-api-demos/listbox/selection/main.js b/vue-options-api-demos/listbox/selection/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listbox/selection/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listbox/selection/main.vue b/vue-options-api-demos/listbox/selection/main.vue
new file mode 100644
index 00000000..247049ff
--- /dev/null
+++ b/vue-options-api-demos/listbox/selection/main.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
Employees
+
+
+
+
+
+
+
+
Developers
+
+
+
+
+
+
diff --git a/vue-options-api-demos/listbox/shared/data.js b/vue-options-api-demos/listbox/shared/data.js
new file mode 100644
index 00000000..d5d92bba
--- /dev/null
+++ b/vue-options-api-demos/listbox/shared/data.js
@@ -0,0 +1,30 @@
+export const data = [
+ {
+ name: 'Steven White',
+ selected: true
+ },
+ {
+ name: 'Nancy King',
+ selected: false
+ },
+ {
+ name: 'Nancy Davolio',
+ selected: false
+ },
+ {
+ name: 'Robert Davolio',
+ selected: false
+ },
+ {
+ name: 'Michael Leverling',
+ selected: false
+ },
+ {
+ name: 'Andrew Callahan',
+ selected: false
+ },
+ {
+ name: 'Michael Suyama',
+ selected: false
+ }
+ ];
diff --git a/vue-options-api-demos/listbox/shared/es.json b/vue-options-api-demos/listbox/shared/es.json
new file mode 100644
index 00000000..5ea0b181
--- /dev/null
+++ b/vue-options-api-demos/listbox/shared/es.json
@@ -0,0 +1,11 @@
+{
+ "listbox": {
+ "moveUp": "Ascender",
+ "moveDown": "Мove hacia abajo",
+ "transferTo": "Transferir a",
+ "transferFrom": "Transferido de",
+ "transferAllTo": "Transferir todo a",
+ "transferAllFrom": "Transferir todo desde",
+ "remove": "Eliminar"
+ }
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/listbox/shared/products.json b/vue-options-api-demos/listbox/shared/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/listbox/shared/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/listview/default-scrolling/employees.js b/vue-options-api-demos/listview/default-scrolling/employees.js
new file mode 100644
index 00000000..88c947bb
--- /dev/null
+++ b/vue-options-api-demos/listview/default-scrolling/employees.js
@@ -0,0 +1,1402 @@
+export const employees = [
+ {
+ id: '848e6002-8a92-447d-951b-1ffd5e695578',
+ full_name: 'Sig Jeannel',
+ job_title: 'Human Resources Assistant III',
+ country: 'US',
+ is_online: true,
+ rating: 3,
+ target: 100,
+ budget: 47601,
+ phone: '(936) 9429601',
+ address: '138 Buhler Avenue',
+ img_id: 1,
+ gender: 'M',
+ },
+ {
+ id: '19d18d40-0e64-4837-9420-92130a0ed253',
+ full_name: 'Shelden Greyes',
+ job_title: 'Operator',
+ country: 'GB',
+ is_online: true,
+ rating: 5,
+ target: 40,
+ budget: 12253,
+ phone: '(343) 6656271',
+ address: '2 Waxwing Point',
+ img_id: 2,
+ gender: 'M',
+ },
+ {
+ id: 'bebdc6eb-9179-484a-917d-2e16a23bfdfe',
+ full_name: 'Megen Cody',
+ job_title: 'Operator',
+ country: 'BR',
+ is_online: true,
+ rating: 1,
+ target: 66,
+ budget: 96183,
+ phone: '(178) 2336256',
+ address: '4082 Stephen Court',
+ img_id: 6,
+ gender: 'F',
+ },
+ {
+ id: '38b08b88-e482-46fc-8976-83590c02ec23',
+ full_name: 'Clevey Thursfield',
+ job_title: 'VP Quality Control',
+ country: 'BR',
+ is_online: true,
+ rating: 2,
+ target: 58,
+ budget: 54936,
+ phone: '(277) 7415010',
+ address: '1563 Glacier Hill Parkway',
+ img_id: 5,
+ gender: 'M',
+ },
+ {
+ id: '2aac53f8-b72d-4629-9082-6d8239a8fecf',
+ full_name: 'Ruthi Baldini',
+ job_title: 'Data Coordiator',
+ country: 'BR',
+ is_online: true,
+ rating: 3,
+ target: 37,
+ budget: 46572,
+ phone: '(766) 5691615',
+ address: '6 Laurel Avenue',
+ img_id: 8,
+ gender: 'F',
+ },
+ {
+ id: '1aa789e5-de01-406e-a2ee-cc5ce20f7e34',
+ full_name: 'Annecorinne Morter',
+ job_title: 'Professor',
+ country: 'FR',
+ is_online: false,
+ rating: 2,
+ target: 35,
+ budget: 37198,
+ phone: '(807) 2524830',
+ address: '106 Green Street',
+ img_id: 3,
+ gender: 'F',
+ },
+ {
+ id: 'd2ff1b02-3808-44aa-9056-3b5df34bf865',
+ full_name: 'Gracia Punyer',
+ job_title: 'Assistant Manager',
+ country: 'ES',
+ is_online: true,
+ rating: 4,
+ target: 64,
+ budget: 84752,
+ phone: '(515) 9749536',
+ address: '69 Brentwood Alley',
+ img_id: 2,
+ gender: 'F',
+ },
+ {
+ id: '26b2b760-27e8-47a6-81c2-07870d1b2b30',
+ full_name: 'Duky Hurring',
+ job_title: 'Account Executive',
+ country: 'BR',
+ is_online: false,
+ rating: 3,
+ target: 61,
+ budget: -1266,
+ phone: '(897) 7202034',
+ address: '39 Morning Circle',
+ img_id: 3,
+ gender: 'M',
+ },
+ {
+ id: '91c6b652-4206-4a0c-bac6-dc21283a72d7',
+ full_name: 'Briana Shemelt',
+ job_title: 'Professor',
+ country: 'US',
+ is_online: false,
+ rating: 3,
+ target: 63,
+ budget: -9308,
+ phone: '(205) 2560799',
+ address: '11 Walton Court',
+ img_id: 2,
+ gender: 'F',
+ },
+ {
+ id: '1e8289dc-2ef3-4045-ad6b-786d00368427',
+ full_name: 'Lexis Mostin',
+ job_title: 'Analyst Programmer',
+ country: 'FR',
+ is_online: true,
+ rating: 4,
+ target: 81,
+ budget: 38153,
+ phone: '(903) 8388089',
+ address: '38547 Westend Way',
+ img_id: 4,
+ gender: 'F',
+ },
+ {
+ id: '797387bd-c247-48b3-97b6-5e75791f8809',
+ full_name: 'Felizio Gooda',
+ job_title: 'GIS Technical Architect',
+ country: 'DE',
+ is_online: true,
+ rating: 3,
+ target: 89,
+ budget: 81585,
+ phone: '(372) 2389397',
+ address: '9 Summer Ridge Circle',
+ img_id: 2,
+ gender: 'M',
+ },
+ {
+ id: '24c541b0-4978-4072-84d0-abe94fcd0756',
+ full_name: 'Aubry Oxberry',
+ job_title: 'Financial Advisor',
+ country: 'BR',
+ is_online: false,
+ rating: 2,
+ target: 3,
+ budget: -6095,
+ phone: '(665) 4176083',
+ address: '06 Lerdahl Point',
+ img_id: 10,
+ gender: 'F',
+ },
+ {
+ id: 'd3416440-7411-42cc-a913-7dd319ca8311',
+ full_name: 'Orly Glasbey',
+ job_title: 'Environmental Tech',
+ country: 'BR',
+ is_online: true,
+ rating: 5,
+ target: 63,
+ budget: 63945,
+ phone: '(449) 8482879',
+ address: '4035 Porter Parkway',
+ img_id: 6,
+ gender: 'F',
+ },
+ {
+ id: '139066b5-60c5-4cf5-9afe-fb4e5558b087',
+ full_name: 'Stephanus Culp',
+ job_title: 'Cost Accountant',
+ country: 'BR',
+ is_online: false,
+ rating: 2,
+ target: 60,
+ budget: 10613,
+ phone: '(148) 3124030',
+ address: '57028 Moland Terrace',
+ img_id: 8,
+ gender: 'M',
+ },
+ {
+ id: 'eb844971-b97d-4f79-bd5a-a266fcfaaf70',
+ full_name: 'Roseanna Janecek',
+ job_title: 'Database Administrator IV',
+ country: 'FR',
+ is_online: false,
+ rating: 4,
+ target: 97,
+ budget: 77351,
+ phone: '(125) 4421623',
+ address: '21973 Beilfuss Alley',
+ img_id: 4,
+ gender: 'F',
+ },
+ {
+ id: '5cb391fe-4855-445c-a8b8-617c04d1d999',
+ full_name: 'Weidar McCombe',
+ job_title: 'Civil Engineer',
+ country: 'FR',
+ is_online: true,
+ rating: 1,
+ target: 77,
+ budget: 35924,
+ phone: '(488) 7911627',
+ address: '7 Dahle Terrace',
+ img_id: 1,
+ gender: 'M',
+ },
+ {
+ id: '4ba9ad7e-d8b7-40e7-b8cd-67a8e743a249',
+ full_name: 'Evelin Spirritt',
+ job_title: 'Analyst Programmer',
+ country: 'BR',
+ is_online: false,
+ rating: 2,
+ target: 18,
+ budget: 58552,
+ phone: '(821) 9538078',
+ address: '89418 Knutson Pass',
+ img_id: 1,
+ gender: 'M',
+ },
+ {
+ id: 'e4a31407-39d1-4ab7-aad1-4e026a8c42fa',
+ full_name: 'Andria Helbeck',
+ job_title: 'Nurse Practicioner',
+ country: 'BR',
+ is_online: true,
+ rating: 4,
+ target: 53,
+ budget: 72526,
+ phone: '(387) 9614638',
+ address: '8589 Vernon Drive',
+ img_id: 8,
+ gender: 'F',
+ },
+ {
+ id: 'cd050499-dbf1-4a43-86ab-54feaacef401',
+ full_name: 'Mariellen Ravelus',
+ job_title: 'Systems Administrator I',
+ country: 'DE',
+ is_online: true,
+ rating: 2,
+ target: 22,
+ budget: -6659,
+ phone: '(300) 6741661',
+ address: '707 Gale Hill',
+ img_id: 9,
+ gender: 'F',
+ },
+ {
+ id: 'fda1c419-c0b8-4278-94b0-2ebef6bda164',
+ full_name: 'Corri Pergens',
+ job_title: 'Help Desk Operator',
+ country: 'BR',
+ is_online: true,
+ rating: 2,
+ target: 74,
+ budget: 12376,
+ phone: '(769) 7145603',
+ address: '856 Forest Crossing',
+ img_id: 3,
+ gender: 'F',
+ },
+ {
+ id: '4a962db9-136e-4fcc-a683-2f961e27fb6e',
+ full_name: 'Friedrick Macknish',
+ job_title: 'Human Resources Assistant II',
+ country: 'FR',
+ is_online: true,
+ rating: 2,
+ target: 38,
+ budget: 97848,
+ phone: '(196) 4156385',
+ address: '157 Talisman Trail',
+ img_id: 9,
+ gender: 'M',
+ },
+ {
+ id: 'fa47e456-83c4-4fdc-b57b-07effb279967',
+ full_name: 'Georgette Trevorrow',
+ job_title: 'VP Accounting',
+ country: 'FR',
+ is_online: true,
+ rating: 3,
+ target: 3,
+ budget: 17327,
+ phone: '(319) 1412549',
+ address: '07 Marquette Point',
+ img_id: 3,
+ gender: 'F',
+ },
+ {
+ id: '67656444-fbcd-4813-84e7-1bdcd82f803e',
+ full_name: 'Vanya Goalby',
+ job_title: 'Senior Cost Accountant',
+ country: 'FR',
+ is_online: false,
+ rating: 2,
+ target: 77,
+ budget: 33584,
+ phone: '(496) 7538982',
+ address: '2192 Iowa Lane',
+ img_id: 6,
+ gender: 'F',
+ },
+ {
+ id: '05c098c2-9617-4e66-928a-e29b97297138',
+ full_name: 'Abel Ansell',
+ job_title: 'Actuary',
+ country: 'US',
+ is_online: false,
+ rating: 4,
+ target: 52,
+ budget: 12312,
+ phone: '(571) 9908377',
+ address: '4355 Iowa Parkway',
+ img_id: 4,
+ gender: 'M',
+ },
+ {
+ id: '3b263e99-51bf-4461-bb20-d4303d326cd9',
+ full_name: 'Odille Barus',
+ job_title: 'Speech Pathologist',
+ country: 'FR',
+ is_online: true,
+ rating: 4,
+ target: 60,
+ budget: 46911,
+ phone: '(974) 1137672',
+ address: '496 Lotheville Avenue',
+ img_id: 8,
+ gender: 'F',
+ },
+ {
+ id: 'c09ddfaf-569e-4a75-8e53-1be27cf25927',
+ full_name: 'Rudolf Consadine',
+ job_title: 'Structural Analysis Engineer',
+ country: 'FR',
+ is_online: true,
+ rating: 4,
+ target: 20,
+ budget: 94258,
+ phone: '(450) 7612220',
+ address: '93 Thierer Park',
+ img_id: 6,
+ gender: 'M',
+ },
+ {
+ id: 'a48abbc9-6143-4f77-a720-0b76ad862a9a',
+ full_name: 'Christabel Bick',
+ job_title: 'Engineer III',
+ country: 'FR',
+ is_online: true,
+ rating: 5,
+ target: 0,
+ budget: 65359,
+ phone: '(361) 5159566',
+ address: '191 Bunting Pass',
+ img_id: 5,
+ gender: 'F',
+ },
+ {
+ id: 'd8816aee-4230-4392-a045-0a9c297451f7',
+ full_name: 'Lancelot Tanzer',
+ job_title: 'Senior Developer',
+ country: 'US',
+ is_online: true,
+ rating: 5,
+ target: 80,
+ budget: 13246,
+ phone: '(502) 3949900',
+ address: '4287 Corben Plaza',
+ img_id: 8,
+ gender: 'M',
+ },
+ {
+ id: '9f5af32c-fb0d-4449-a658-f2c7f182b63a',
+ full_name: 'Bink Byk',
+ job_title: 'Software Engineer I',
+ country: 'FR',
+ is_online: false,
+ rating: 3,
+ target: 17,
+ budget: 56472,
+ phone: '(475) 9070061',
+ address: '075 Eggendart Avenue',
+ img_id: 9,
+ gender: 'M',
+ },
+ {
+ id: 'dbd7f48a-6540-4560-bb7c-cd60456b55b8',
+ full_name: 'Rhys Pheazey',
+ job_title: 'Speech Pathologist',
+ country: 'BR',
+ is_online: false,
+ rating: 5,
+ target: 98,
+ budget: 62483,
+ phone: '(365) 8904529',
+ address: '987 Carioca Lane',
+ img_id: 9,
+ gender: 'M',
+ },
+ {
+ id: '844189fe-d36e-4e06-9761-932259701fc8',
+ full_name: 'Lyndell Howieson',
+ job_title: 'Speech Pathologist',
+ country: 'DE',
+ is_online: true,
+ rating: 2,
+ target: 82,
+ budget: 16694,
+ phone: '(461) 3130038',
+ address: '9 Pennsylvania Crossing',
+ img_id: 8,
+ gender: 'F',
+ },
+ {
+ id: '5544d9d5-40ea-4e5a-8fb8-f5016b313b8f',
+ full_name: 'Cassey Fitchell',
+ job_title: 'Software Engineer III',
+ country: 'FR',
+ is_online: true,
+ rating: 2,
+ target: 10,
+ budget: 91253,
+ phone: '(985) 5060547',
+ address: '652 Merry Place',
+ img_id: 9,
+ gender: 'F',
+ },
+ {
+ id: '1c669764-3cff-424a-b7e4-e7711d6c7d6c',
+ full_name: 'Coralyn Steljes',
+ job_title: 'Accounting Assistant III',
+ country: 'FR',
+ is_online: false,
+ rating: 2,
+ target: 81,
+ budget: -9871,
+ phone: '(760) 5696853',
+ address: '4 Norway Maple Pass',
+ img_id: 9,
+ gender: 'F',
+ },
+ {
+ id: '4cc649dc-7f85-40ab-bc59-950f37268a65',
+ full_name: 'Bruis Creavin',
+ job_title: 'Nuclear Power Engineer',
+ country: 'BR',
+ is_online: false,
+ rating: 1,
+ target: 59,
+ budget: -5798,
+ phone: '(570) 8801169',
+ address: '71 Carioca Park',
+ img_id: 6,
+ gender: 'M',
+ },
+ {
+ id: '8c9505f1-e8f8-4ba6-8c9a-5a1d089c6f09',
+ full_name: 'Adrianne Peery',
+ job_title: 'Chief Design Engineer',
+ country: 'FR',
+ is_online: false,
+ rating: 2,
+ target: 2,
+ budget: 56575,
+ phone: '(793) 1143493',
+ address: '3 2nd Drive',
+ img_id: 7,
+ gender: 'F',
+ },
+ {
+ id: 'ced0905e-44ac-4317-a203-76994e53a751',
+ full_name: 'Port Gerauld',
+ job_title: 'Senior Cost Accountant',
+ country: 'FR',
+ is_online: true,
+ rating: 2,
+ target: 27,
+ budget: 97919,
+ phone: '(155) 5488067',
+ address: '9 High Crossing Center',
+ img_id: 5,
+ gender: 'M',
+ },
+ {
+ id: 'f0bcc7cd-999e-4611-a04f-7bdc16bc6160',
+ full_name: 'Boy Antoszewski',
+ job_title: 'VP Accounting',
+ country: 'GB',
+ is_online: true,
+ rating: 2,
+ target: 11,
+ budget: 74779,
+ phone: '(715) 9192627',
+ address: '3773 Hazelcrest Road',
+ img_id: 6,
+ gender: 'M',
+ },
+ {
+ id: '322540e3-b72e-4b7d-ae4a-d927911340b7',
+ full_name: 'Gib Yakebowitch',
+ job_title: 'Marketing Assistant',
+ country: 'BR',
+ is_online: false,
+ rating: 5,
+ target: 57,
+ budget: 89028,
+ phone: '(923) 6953600',
+ address: '7 Mariners Cove Point',
+ img_id: 8,
+ gender: 'M',
+ },
+ {
+ id: 'b1ed798d-6177-4a27-9571-2e02be932214',
+ full_name: 'Minerva Gilders',
+ job_title: 'Administrative Officer',
+ country: 'BR',
+ is_online: false,
+ rating: 3,
+ target: 54,
+ budget: 32267,
+ phone: '(773) 8863232',
+ address: '82 Annamark Way',
+ img_id: 4,
+ gender: 'F',
+ },
+ {
+ id: 'd26bcf84-a8b4-471c-a582-2de64d7e7715',
+ full_name: 'Wait Peperell',
+ job_title: 'Web Designer III',
+ country: 'US',
+ is_online: true,
+ rating: 4,
+ target: 94,
+ budget: 72251,
+ phone: '(419) 5806752',
+ address: '0355 Petterle Avenue',
+ img_id: 8,
+ gender: 'M',
+ },
+ {
+ id: 'da813d45-bd3b-4bfa-abdd-e12050a5da14',
+ full_name: 'Ailsun Esmead',
+ job_title: 'Software Test Engineer III',
+ country: 'FR',
+ is_online: true,
+ rating: 1,
+ target: 12,
+ budget: 69596,
+ phone: '(852) 7039628',
+ address: '0 Lunder Crossing',
+ img_id: 8,
+ gender: 'F',
+ },
+ {
+ id: '944d8752-ef63-47bc-8db0-f40808d50b15',
+ full_name: 'Vallie Van der Velde',
+ job_title: 'Nurse',
+ country: 'GB',
+ is_online: true,
+ rating: 3,
+ target: 89,
+ budget: 19530,
+ phone: '(331) 7690832',
+ address: '2 Almo Lane',
+ img_id: 4,
+ gender: 'F',
+ },
+ {
+ id: '3d2f991c-58ef-436d-912e-49496fd2065c',
+ full_name: 'Dov Amber',
+ job_title: 'Sales Representative',
+ country: 'FR',
+ is_online: false,
+ rating: 4,
+ target: 55,
+ budget: 61106,
+ phone: '(793) 4768356',
+ address: '4 Rockefeller Street',
+ img_id: 3,
+ gender: 'M',
+ },
+ {
+ id: '29b406e9-ca20-45cb-8630-6df3a632276a',
+ full_name: 'Tedie Alu',
+ job_title: 'Business Systems Analyst',
+ country: 'FR',
+ is_online: false,
+ rating: 1,
+ target: 76,
+ budget: 3114,
+ phone: '(602) 5831373',
+ address: '28 Claremont Plaza',
+ img_id: 5,
+ gender: 'M',
+ },
+ {
+ id: '767de27a-421c-4147-a552-26ac56390339',
+ full_name: 'Tally Rizzi',
+ job_title: 'Civil Engineer',
+ country: 'US',
+ is_online: false,
+ rating: 1,
+ target: 5,
+ budget: 78575,
+ phone: '(302) 6856300',
+ address: '1 Roth Park',
+ img_id: 10,
+ gender: 'M',
+ },
+ {
+ id: '2b6e6902-11b5-4ca7-8a59-c32b3f57533b',
+ full_name: 'Ilise Lewnden',
+ job_title: 'Database Administrator I',
+ country: 'BR',
+ is_online: false,
+ rating: 4,
+ target: 33,
+ budget: -1059,
+ phone: '(659) 8660881',
+ address: '19 Stuart Alley',
+ img_id: 2,
+ gender: 'F',
+ },
+ {
+ id: 'c891e87f-b19b-4cb5-8902-b19c59e37494',
+ full_name: 'Farr Penwright',
+ job_title: 'Senior Editor',
+ country: 'US',
+ is_online: true,
+ rating: 3,
+ target: 82,
+ budget: 30505,
+ phone: '(505) 3900066',
+ address: '9200 Karstens Crossing',
+ img_id: 6,
+ gender: 'M',
+ },
+ {
+ id: '65821428-adc7-4743-9dd8-cf62400e62f2',
+ full_name: 'Chantal Bidgod',
+ job_title: 'VP Sales',
+ country: 'BR',
+ is_online: false,
+ rating: 3,
+ target: 62,
+ budget: 25742,
+ phone: '(746) 3962702',
+ address: '8807 Kinsman Drive',
+ img_id: 2,
+ gender: 'F',
+ },
+ {
+ id: 'f42907e0-d92c-4fb0-b886-2e84331ffe28',
+ full_name: 'Johanna Bergin',
+ job_title: 'Electrical Engineer',
+ country: 'BR',
+ is_online: false,
+ rating: 2,
+ target: 54,
+ budget: 25864,
+ phone: '(720) 6442547',
+ address: '93166 Spohn Court',
+ img_id: 3,
+ gender: 'F',
+ },
+ {
+ id: '4531be30-eec7-477f-bdc5-88acb8d902af',
+ full_name: 'Padriac Syphas',
+ job_title: 'Marketing Assistant',
+ country: 'BR',
+ is_online: true,
+ rating: 1,
+ target: 50,
+ budget: 20879,
+ phone: '(606) 9062546',
+ address: '50465 Buena Vista Plaza',
+ img_id: 5,
+ gender: 'M',
+ },
+ {
+ id: '4f0ab8f6-7a36-4a5c-a513-d5495223a9cd',
+ full_name: 'Garey De Maria',
+ job_title: 'Operator',
+ country: 'US',
+ is_online: true,
+ rating: 2,
+ target: 54,
+ budget: 94251,
+ phone: '(972) 1133958',
+ address: '24 Maple Wood Terrace',
+ img_id: 9,
+ gender: 'M',
+ },
+ {
+ id: '13556e73-d43a-485d-8603-cbf1769bd0ac',
+ full_name: 'Glenn Thorwarth',
+ job_title: 'Developer IV',
+ country: 'BR',
+ is_online: false,
+ rating: 5,
+ target: 39,
+ budget: 33511,
+ phone: '(394) 3115946',
+ address: '8 Dryden Park',
+ img_id: 1,
+ gender: 'M',
+ },
+ {
+ id: 'c8389213-a2cd-4bb8-ba99-9c29e9b70881',
+ full_name: 'Bron Crosson',
+ job_title: 'GIS Technical Architect',
+ country: 'FR',
+ is_online: true,
+ rating: 2,
+ target: 80,
+ budget: 62081,
+ phone: '(686) 7934926',
+ address: '974 Mayfield Place',
+ img_id: 9,
+ gender: 'M',
+ },
+ {
+ id: 'cd233a4e-0315-496d-8f5f-4c8787b0f1ba',
+ full_name: 'Garey Malecky',
+ job_title: 'Account Executive',
+ country: 'BR',
+ is_online: false,
+ rating: 5,
+ target: 51,
+ budget: 76354,
+ phone: '(304) 6324519',
+ address: '3 Paget Court',
+ img_id: 9,
+ gender: 'M',
+ },
+ {
+ id: '339838eb-99dc-4fc0-8e18-060dbcf6bf78',
+ full_name: 'Elisabet Kimblin',
+ job_title: 'Automation Specialist I',
+ country: 'US',
+ is_online: true,
+ rating: 3,
+ target: 35,
+ budget: 26755,
+ phone: '(904) 3334563',
+ address: '75 Buell Court',
+ img_id: 1,
+ gender: 'F',
+ },
+ {
+ id: '90a03a5a-1f16-4721-8c56-af4bb89a1f57',
+ full_name: 'Berk Uttley',
+ job_title: 'Health Coach IV',
+ country: 'FR',
+ is_online: false,
+ rating: 4,
+ target: 58,
+ budget: 82064,
+ phone: '(200) 2124940',
+ address: '4 Mockingbird Trail',
+ img_id: 8,
+ gender: 'M',
+ },
+ {
+ id: 'ce5ba778-43eb-4658-a6bd-56f04e6f125f',
+ full_name: 'Kenny Clackers',
+ job_title: 'Assistant Manager',
+ country: 'FR',
+ is_online: true,
+ rating: 4,
+ target: 37,
+ budget: 47477,
+ phone: '(926) 3235464',
+ address: '53315 Bashford Lane',
+ img_id: 2,
+ gender: 'M',
+ },
+ {
+ id: 'df3dffe4-6fb4-4a9c-8512-71f7cb508180',
+ full_name: 'Rickard Pingston',
+ job_title: 'Environmental Specialist',
+ country: 'BR',
+ is_online: true,
+ rating: 5,
+ target: 72,
+ budget: 94173,
+ phone: '(902) 4658383',
+ address: '8 Mesta Court',
+ img_id: 2,
+ gender: 'M',
+ },
+ {
+ id: '2757a92d-5eed-4215-818f-fdf15b6b27d0',
+ full_name: 'Hobard Clabburn',
+ job_title: 'Systems Administrator I',
+ country: 'BR',
+ is_online: true,
+ rating: 2,
+ target: 37,
+ budget: 66166,
+ phone: '(711) 6587550',
+ address: '29796 Mcbride Court',
+ img_id: 2,
+ gender: 'M',
+ },
+ {
+ id: '71ebd82a-f9f2-48ea-ada4-ce8db424df64',
+ full_name: 'Uri Champken',
+ job_title: 'Software Test Engineer IV',
+ country: 'BR',
+ is_online: false,
+ rating: 1,
+ target: 39,
+ budget: 65176,
+ phone: '(514) 1953919',
+ address: '78 Rowland Alley',
+ img_id: 6,
+ gender: 'M',
+ },
+ {
+ id: 'b7a77c35-1f9f-45c5-ba44-7622d279b377',
+ full_name: 'Obidiah Fold',
+ job_title: 'Budget/Accounting Analyst I',
+ country: 'FR',
+ is_online: false,
+ rating: 5,
+ target: 66,
+ budget: 74529,
+ phone: '(747) 8711780',
+ address: '58 Lakeland Court',
+ img_id: 9,
+ gender: 'M',
+ },
+ {
+ id: '9c0fbca6-b793-4fdc-8dcf-5136cb5d049c',
+ full_name: 'Angelia Marconi',
+ job_title: 'Associate Professor',
+ country: 'FR',
+ is_online: false,
+ rating: 4,
+ target: 91,
+ budget: 38996,
+ phone: '(530) 7506861',
+ address: '7 Ohio Parkway',
+ img_id: 2,
+ gender: 'F',
+ },
+ {
+ id: '9083010c-4f59-49e7-96c6-894cbf24ed75',
+ full_name: 'Ronda Lock',
+ job_title: 'Quality Engineer',
+ country: 'US',
+ is_online: false,
+ rating: 5,
+ target: 36,
+ budget: 69903,
+ phone: '(916) 6819628',
+ address: '802 American Ash Street',
+ img_id: 6,
+ gender: 'F',
+ },
+ {
+ id: '4225013e-fd75-46f6-b678-b25675e131bc',
+ full_name: 'Rachele Fantham',
+ job_title: 'Business Systems Analyst',
+ country: 'FR',
+ is_online: true,
+ rating: 2,
+ target: 100,
+ budget: 79333,
+ phone: '(652) 3112938',
+ address: '62 Grim Center',
+ img_id: 4,
+ gender: 'F',
+ },
+ {
+ id: 'b75a42e9-db84-479c-96b0-d88109abfebb',
+ full_name: 'Emanuel Deery',
+ job_title: 'Electrical Engineer',
+ country: 'BR',
+ is_online: false,
+ rating: 3,
+ target: 93,
+ budget: 77477,
+ phone: '(860) 8318923',
+ address: '850 Mifflin Junction',
+ img_id: 8,
+ gender: 'M',
+ },
+ {
+ id: 'b2e28f42-7a35-4e23-b2e4-40fe3ed909ca',
+ full_name: 'Clay Ellins',
+ job_title: 'Design Engineer',
+ country: 'US',
+ is_online: true,
+ rating: 4,
+ target: 98,
+ budget: 4120,
+ phone: '(682) 4688237',
+ address: '458 Scoville Lane',
+ img_id: 5,
+ gender: 'M',
+ },
+ {
+ id: '4239103e-80bc-4f09-8655-c2165b063027',
+ full_name: 'Bettina Menlove',
+ job_title: 'Senior Financial Analyst',
+ country: 'FR',
+ is_online: false,
+ rating: 5,
+ target: 78,
+ budget: 80574,
+ phone: '(293) 8801412',
+ address: '29 Onsgard Junction',
+ img_id: 8,
+ gender: 'F',
+ },
+ {
+ id: '8442ff74-6f05-43f7-90de-b948a5c2c895',
+ full_name: 'Claiborne Willoughey',
+ job_title: 'Food Chemist',
+ country: 'US',
+ is_online: true,
+ rating: 5,
+ target: 44,
+ budget: 44673,
+ phone: '(707) 3380798',
+ address: '39114 Killdeer Terrace',
+ img_id: 6,
+ gender: 'M',
+ },
+ {
+ id: '1701041a-2ede-4c1d-a51b-8fe4b3ec1c35',
+ full_name: 'Desmond Gritskov',
+ job_title: 'Pharmacist',
+ country: 'BR',
+ is_online: false,
+ rating: 4,
+ target: 66,
+ budget: 45319,
+ phone: '(412) 1336481',
+ address: '6912 Farwell Street',
+ img_id: 6,
+ gender: 'M',
+ },
+ {
+ id: '609fd74e-e6c3-41ae-a227-d3d9caba0582',
+ full_name: 'Codee Maybery',
+ job_title: 'Clinical Specialist',
+ country: 'US',
+ is_online: true,
+ rating: 2,
+ target: 26,
+ budget: 43462,
+ phone: '(682) 7969803',
+ address: '4 Tennessee Plaza',
+ img_id: 3,
+ gender: 'F',
+ },
+ {
+ id: 'f535ef7f-c79d-4936-af40-d062d2b2d5c0',
+ full_name: 'Denys Beynke',
+ job_title: 'Occupational Therapist',
+ country: 'BR',
+ is_online: true,
+ rating: 4,
+ target: 60,
+ budget: 32402,
+ phone: '(110) 4341370',
+ address: '99 Trailsway Park',
+ img_id: 4,
+ gender: 'M',
+ },
+ {
+ id: 'ae126e65-b6ab-4388-ba5c-f6f5d54fc435',
+ full_name: 'Guthry Limpricht',
+ job_title: 'Geologist II',
+ country: 'DE',
+ is_online: true,
+ rating: 3,
+ target: 65,
+ budget: 68462,
+ phone: '(100) 8946768',
+ address: '3117 Commercial Crossing',
+ img_id: 2,
+ gender: 'M',
+ },
+ {
+ id: '9b1efdfc-4cce-4350-9516-028884fb1725',
+ full_name: 'Cammie Knoble',
+ job_title: 'Community Outreach Specialist',
+ country: 'GB',
+ is_online: false,
+ rating: 2,
+ target: 1,
+ budget: 70198,
+ phone: '(352) 1663192',
+ address: '55 Longview Place',
+ img_id: 4,
+ gender: 'F',
+ },
+ {
+ id: 'a44c41e2-3adc-4d52-acb3-06f90e0214c9',
+ full_name: 'Kiri Espinal',
+ job_title: 'Accounting Assistant I',
+ country: 'FR',
+ is_online: false,
+ rating: 3,
+ target: 47,
+ budget: 3712,
+ phone: '(946) 6686147',
+ address: '90480 Chinook Drive',
+ img_id: 4,
+ gender: 'F',
+ },
+ {
+ id: '9d6d3063-7be8-49fe-be31-64d0d5949f02',
+ full_name: 'Joy Tiddy',
+ job_title: 'Engineer III',
+ country: 'FR',
+ is_online: true,
+ rating: 5,
+ target: 80,
+ budget: 61355,
+ phone: '(849) 1097790',
+ address: '76 Summerview Hill',
+ img_id: 9,
+ gender: 'F',
+ },
+ {
+ id: '44def3bb-7c65-45d3-aef6-bf8b49f934b3',
+ full_name: 'Arlene Karlsson',
+ job_title: 'Civil Engineer',
+ country: 'BR',
+ is_online: true,
+ rating: 4,
+ target: 98,
+ budget: 14267,
+ phone: '(699) 4713080',
+ address: '90 Dorton Point',
+ img_id: 5,
+ gender: 'F',
+ },
+ {
+ id: '7b991e13-bef7-4f19-bd18-d5aa9d263cba',
+ full_name: 'Melony Millwater',
+ job_title: 'Chief Design Engineer',
+ country: 'US',
+ is_online: true,
+ rating: 2,
+ target: 27,
+ budget: 67126,
+ phone: '(352) 5197697',
+ address: '65242 Derek Place',
+ img_id: 1,
+ gender: 'F',
+ },
+ {
+ id: 'ab6704b8-20ed-4881-ab28-96e3d55f7792',
+ full_name: 'Mab Ballham',
+ job_title: 'Programmer Analyst II',
+ country: 'FR',
+ is_online: false,
+ rating: 1,
+ target: 34,
+ budget: 65648,
+ phone: '(699) 9285470',
+ address: '2579 Messerschmidt Crossing',
+ img_id: 8,
+ gender: 'F',
+ },
+ {
+ id: '03f0f5a0-8b7c-486e-ae4b-c9e5858bbde8',
+ full_name: 'Nixie MacAskie',
+ job_title: 'Structural Analysis Engineer',
+ country: 'BR',
+ is_online: true,
+ rating: 2,
+ target: 13,
+ budget: -5312,
+ phone: '(434) 6153212',
+ address: '59672 Village Court',
+ img_id: 4,
+ gender: 'F',
+ },
+ {
+ id: '6b63462d-b181-4055-813d-983002ea57b8',
+ full_name: 'Gianni Crafts',
+ job_title: 'Tax Accountant',
+ country: 'FR',
+ is_online: false,
+ rating: 3,
+ target: 54,
+ budget: 85744,
+ phone: '(428) 3135618',
+ address: '53766 Buhler Parkway',
+ img_id: 8,
+ gender: 'M',
+ },
+ {
+ id: 'dcafac96-c436-4232-8d0e-eda10d029e1d',
+ full_name: 'Moyra Summerlie',
+ job_title: 'Business Systems Analyst',
+ country: 'FR',
+ is_online: true,
+ rating: 5,
+ target: 3,
+ budget: 19109,
+ phone: '(960) 7792763',
+ address: '127 Spohn Crossing',
+ img_id: 6,
+ gender: 'F',
+ },
+ {
+ id: 'a765924f-8ffb-4186-8991-6000a6ce2652',
+ full_name: 'Hagan Trevers',
+ job_title: 'Mechanical Systems Engineer',
+ country: 'FR',
+ is_online: false,
+ rating: 2,
+ target: 93,
+ budget: 28290,
+ phone: '(749) 8913157',
+ address: '516 Clove Road',
+ img_id: 7,
+ gender: 'M',
+ },
+ {
+ id: '2c3423dd-81d0-4e41-987e-1c39956c9ba8',
+ full_name: 'Sela Westmacott',
+ job_title: 'Account Executive',
+ country: 'BR',
+ is_online: false,
+ rating: 3,
+ target: 29,
+ budget: 58239,
+ phone: '(130) 9778509',
+ address: '81 Maple Point',
+ img_id: 2,
+ gender: 'F',
+ },
+ {
+ id: 'e8bce62e-3bf4-4232-801c-bbcc8dab2e74',
+ full_name: 'Lilia Wiz',
+ job_title: 'VP Product Management',
+ country: 'FR',
+ is_online: false,
+ rating: 1,
+ target: 65,
+ budget: 1438,
+ phone: '(418) 5940094',
+ address: '905 Hauk Point',
+ img_id: 1,
+ gender: 'F',
+ },
+ {
+ id: '5b9b9235-e0f2-4102-b5f1-d512774e7191',
+ full_name: 'Orlan MacAlpin',
+ job_title: 'Statistician I',
+ country: 'US',
+ is_online: false,
+ rating: 1,
+ target: 1,
+ budget: 9094,
+ phone: '(512) 7106617',
+ address: '6055 Truax Way',
+ img_id: 2,
+ gender: 'M',
+ },
+ {
+ id: '1124d1b2-6ac3-4f2f-ba35-1da116844b0e',
+ full_name: 'Ty Nutton',
+ job_title: 'Speech Pathologist',
+ country: 'FR',
+ is_online: false,
+ rating: 5,
+ target: 88,
+ budget: 76684,
+ phone: '(250) 2530424',
+ address: '37247 Merry Plaza',
+ img_id: 1,
+ gender: 'M',
+ },
+ {
+ id: '01e7f525-ab3f-48b7-941f-c6ad601ea69f',
+ full_name: 'Mirelle Jandl',
+ job_title: 'Civil Engineer',
+ country: 'DE',
+ is_online: true,
+ rating: 3,
+ target: 19,
+ budget: 94486,
+ phone: '(871) 7917453',
+ address: '31 Anderson Hill',
+ img_id: 10,
+ gender: 'F',
+ },
+ {
+ id: '078b38d3-79a5-4df1-bd97-f83e300224a4',
+ full_name: 'Diann Bertram',
+ job_title: 'Structural Engineer',
+ country: 'BR',
+ is_online: true,
+ rating: 2,
+ target: 38,
+ budget: 2769,
+ phone: '(716) 9445650',
+ address: '958 Swallow Drive',
+ img_id: 4,
+ gender: 'F',
+ },
+ {
+ id: '7ca6af51-11bc-44f3-b92f-7af02923d040',
+ full_name: 'Cindra Slobom',
+ job_title: 'Web Designer III',
+ country: 'BR',
+ is_online: true,
+ rating: 5,
+ target: 48,
+ budget: 81624,
+ phone: '(409) 9223432',
+ address: '82525 Northridge Junction',
+ img_id: 1,
+ gender: 'F',
+ },
+ {
+ id: '86a585e1-b76d-43b5-982d-e74b5b4b616b',
+ full_name: 'Tymon Mattheissen',
+ job_title: 'Dental Hygienist',
+ country: 'FR',
+ is_online: false,
+ rating: 2,
+ target: 51,
+ budget: 42972,
+ phone: '(724) 3234885',
+ address: '64363 Anzinger Plaza',
+ img_id: 3,
+ gender: 'M',
+ },
+ {
+ id: '37e366fb-9371-4df5-980c-e9678ec9cde2',
+ full_name: 'Fancie Heighton',
+ job_title: 'Paralegal',
+ country: 'FR',
+ is_online: true,
+ rating: 5,
+ target: 52,
+ budget: 67403,
+ phone: '(738) 9982239',
+ address: '4353 Hermina Junction',
+ img_id: 1,
+ gender: 'F',
+ },
+ {
+ id: 'b7df7c2a-4d40-4c03-bfb6-ab6d6930340c',
+ full_name: 'Kit Utteridge',
+ job_title: 'Office Assistant I',
+ country: 'FR',
+ is_online: true,
+ rating: 4,
+ target: 93,
+ budget: 36268,
+ phone: '(710) 2371400',
+ address: '46806 Moland Center',
+ img_id: 7,
+ gender: 'F',
+ },
+ {
+ id: '7d740468-fad9-4687-895b-cee07aa3bc3d',
+ full_name: 'Lea Willey',
+ job_title: 'VP Quality Control',
+ country: 'US',
+ is_online: false,
+ rating: 3,
+ target: 19,
+ budget: 54614,
+ phone: '(304) 3327700',
+ address: '1 Moland Crossing',
+ img_id: 6,
+ gender: 'F',
+ },
+ {
+ id: '88df162f-24fa-495d-a65c-b948607193b8',
+ full_name: 'Arri Halton',
+ job_title: 'Staff Accountant II',
+ country: 'GB',
+ is_online: true,
+ rating: 5,
+ target: 73,
+ budget: 32500,
+ phone: '(743) 8449571',
+ address: '3 Starling Trail',
+ img_id: 3,
+ gender: 'M',
+ },
+ {
+ id: 'cb93d087-2f15-43cd-9bc3-89716e39a724',
+ full_name: 'Malva Pierpoint',
+ job_title: 'Operator',
+ country: 'US',
+ is_online: true,
+ rating: 4,
+ target: 98,
+ budget: 20312,
+ phone: '(423) 8195288',
+ address: '57584 Algoma Plaza',
+ img_id: 1,
+ gender: 'F',
+ },
+ {
+ id: 'b76e54a1-1c46-49aa-9464-7dd9aa738b65',
+ full_name: 'Dalston Sabben',
+ job_title: 'Social Worker',
+ country: 'BR',
+ is_online: true,
+ rating: 4,
+ target: 85,
+ budget: 99048,
+ phone: '(388) 2523908',
+ address: '53578 Clove Lane',
+ img_id: 4,
+ gender: 'M',
+ },
+ {
+ id: '608f098b-16f8-4460-bb35-9599a8a74280',
+ full_name: 'Delinda Margrie',
+ job_title: 'Financial Advisor',
+ country: 'US',
+ is_online: false,
+ rating: 1,
+ target: 1,
+ budget: 8398,
+ phone: '(702) 6480692',
+ address: '9 Dapin Plaza',
+ img_id: 9,
+ gender: 'F',
+ },
+ {
+ id: '23b426f8-76d5-4808-84cb-c42bde8362fd',
+ full_name: 'Meggi Westman',
+ job_title: 'Librarian',
+ country: 'US',
+ is_online: true,
+ rating: 3,
+ target: 64,
+ budget: 63413,
+ phone: '(682) 3495155',
+ address: '82 Duke Terrace',
+ img_id: 7,
+ gender: 'F',
+ },
+ {
+ id: '7ecfb74e-64d9-43ee-a028-d2e3841acba9',
+ full_name: 'Bret Barnsdall',
+ job_title: 'Registered Nurse',
+ country: 'BR',
+ is_online: true,
+ rating: 3,
+ target: 52,
+ budget: 55153,
+ phone: '(222) 2089814',
+ address: '4 Corry Park',
+ img_id: 8,
+ gender: 'M',
+ },
+ {
+ id: 'cf505561-d9e1-4d2a-93d5-4745d50595c2',
+ full_name: 'Matthus Shyres',
+ job_title: 'Marketing Manager',
+ country: 'FR',
+ is_online: false,
+ rating: 3,
+ target: 68,
+ budget: 33697,
+ phone: '(539) 9486139',
+ address: '460 Norway Maple Junction',
+ img_id: 1,
+ gender: 'M',
+ },
+];
diff --git a/vue-options-api-demos/listview/default-scrolling/images.js b/vue-options-api-demos/listview/default-scrolling/images.js
new file mode 100644
index 00000000..1bb509bb
--- /dev/null
+++ b/vue-options-api-demos/listview/default-scrolling/images.js
@@ -0,0 +1,55 @@
+export const images = {
+ '10F':
+ 'data:image/jpeg;base64,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',
+
+ '10M':
+ 'data:image/jpeg;base64,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',
+
+ '1F': 'data:image/jpeg;base64,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',
+
+ '1M': 'data:image/jpeg;base64,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',
+
+ '2F': 'data:image/jpeg;base64,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',
+
+ '2M': 'data:image/jpeg;base64,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',
+
+ '3F': 'data:image/jpeg;base64,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',
+
+ '3M': 'data:image/jpeg;base64,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',
+
+ '4F': 'data:image/jpeg;base64,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',
+
+ '4M': 'data:image/jpeg;base64,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',
+
+ '5F': 'data:image/jpeg;base64,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',
+
+ '5M': 'data:image/jpeg;base64,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',
+
+ '6F': 'data:image/jpeg;base64,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',
+
+ '6M': 'data:image/jpeg;base64,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',
+
+ '7F': 'data:image/jpeg;base64,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',
+
+ '7M': 'data:image/jpeg;base64,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',
+
+ '8F': 'data:image/jpeg;base64,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',
+
+ '8M': 'data:image/jpeg;base64,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',
+
+ '9F': 'data:image/jpeg;base64,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',
+
+ '9M': 'data:image/jpeg;base64,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',
+
+ BR: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAtCAIAAACRYfoNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJGNTM2NzBBMEMzNTExRTY5Q0NDQkU3NkQ1MUQ1OTFCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJGNTM2NzBCMEMzNTExRTY5Q0NDQkU3NkQ1MUQ1OTFCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkY1MzY3MDgwQzM1MTFFNjlDQ0NCRTc2RDUxRDU5MUIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkY1MzY3MDkwQzM1MTFFNjlDQ0NCRTc2RDUxRDU5MUIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4SeXTsAAAKC0lEQVR42uxZ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',
+
+ DE: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAmCAIAAAD7pgrOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjZFMUI5MDQ1MEM3MjExRTY4MTcyRDlCOEZDMDU3Rjc3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjZFMUI5MDQ2MEM3MjExRTY4MTcyRDlCOEZDMDU3Rjc3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NkUxQjkwNDMwQzcyMTFFNjgxNzJEOUI4RkMwNTdGNzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NkUxQjkwNDQwQzcyMTFFNjgxNzJEOUI4RkMwNTdGNzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6gw/inAAAAVklEQVR42uzWUQ2AMAxF0Y5MxCThDI1TMAXwCXjg74VzHZw0TVslSZL039qeDljhgH6FA7YCAAAAAABIvsR3OmAc4c/cM8MnUKclBgAAAAAAAPjaK8AAbScGyes+6bEAAAAASUVORK5CYII5OTg=',
+
+ ES: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAArCAIAAABHOBkQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkRGRTFGQzcyMEQxRTExRTY4ODAyRUM0Q0I3OUUwQUMzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkRGRTFGQzczMEQxRTExRTY4ODAyRUM0Q0I3OUUwQUMzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6REZFMUZDNzAwRDFFMTFFNjg4MDJFQzRDQjc5RTBBQzMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6REZFMUZDNzEwRDFFMTFFNjg4MDJFQzRDQjc5RTBBQzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5CGIEmAAAD1UlEQVR42uyYy28bRRzHfzOzD7/Wie3EdtIkdkwSkTRt0iRSlJKKJqhCnJBAiAM3JLhx4QQ3uCP+A269IIGQECFItEhBrVFJBQ1NaVqTuCHOy0lsK2t7nzPDxs0BboYgY4sdzUr7mFnNZ3+v76yQ9vdBKzcMLd5cABfABXABXIAzNYFqqLUBwjNaSwMgvtziLgTGWfBrnbViEKOTqZxBXsVAaq9B/5UF/v7SOce6JaiGvF8Rf9oOzQ/kFYF5RMvpzrPmBkBQNaStY6+qiUS3pLLu14Dl9PskFG4zvQJPRhyLsCYGwHBoeDJfIfEhOgoIeMOrTVd+vNVujVF6iKovku450YMN4E0YA46Li+C4e7ytIoWMrIEqPqM6bnFcKE0w1TIfW6S7s+yRTZBqIxuXRm/VtXpG0c1vBUzghWsWeGHpLlnelAUdhQ71ShsIfnZlmA8PQ7mAbtwQB1J09BIFu5lciAL/nVoEgWGg1et+lseeLGKbHM+/3HdpjCq7WpewVV732Ytrquk3YLS5YoCDgGBwcp5yG8P3W4v+LY9u9uo9m3Lb+UlPcgZ+Xs+pHeJoLKosnp97rVO8ByzTXDGAZAjHXpXJS1YVEQ8tDsv58YAaAIEgdlDyFagSVhAxWBUFg2/7lPGT4tBEFhBhY0nK3vsECE0Xg+YRqDy0pyu9PLu3komNjJjtomLTfMaf/05SfR9qfDt8jXSkGhEG9VmAwHGOkok3yOzrz1xVcZTF8uX+uyyT7PlI969++bU9mSj45M4hs+sCD7zy3rE8YZVYY6Q6+eDNOkYxCPXD3sP24jcPUjMbBwSJx/Y5c/uOPb31bF9sdWWwuKD/tiTt3/ZiNfMF67/4ZGg6h1jzuJAMa5/jQt6feCvaPXRz5VeK44BlcnUnnUxvTkWzzK6IVWA7fOgdabd3Kvtpti+Cuib4mZTivwlgQOoKpeFZRlVmAndyKkOUknhXKSEXZL93JxLpqFQ5WGBx+cLlgeByJJh2rprGAgyUGGi5jy2L4hSAjRwd6hzURhUpIWm52AZYDAsRZLPK0dq7/YHHUhCaqZARuL/bf/2Xy05JjirGyMXN2yVsMMWMTZl4xH50x6dlRKINzukL67MLj0bC3oH3lc/afZUG6Lp6C1lA1GZ795164AEtOUbb4vqBltwVO3aK2cT0uVjxSVfPvq+Dx9dLz/cdeYQydkK4IZKuPi30NN+SU1Fx8l2FU9c63ccINYehtZOnd2xoDIDgZJh/XjnIX235Z3NKjVKjD56LtvamvvCDt7UBiJe3NID7b9QFcAFcABfg/w3whwADALA9jy2I9PhSAAAAAElFTkSuQmCCMTg5Mw==',
+
+ FR: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAArCAIAAABHOBkQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJENDg5REJDMEM3MDExRTZBM0QzODREQzFFNDczOURFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJENDg5REJEMEM3MDExRTZBM0QzODREQzFFNDczOURFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkQ0ODlEQkEwQzcwMTFFNkEzRDM4NERDMUU0NzM5REUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkQ0ODlEQkIwQzcwMTFFNkEzRDM4NERDMUU0NzM5REUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5eKs0eAAAAZUlEQVR42uzPMQ2AQBAAwXu610EwQxCAAnrE0GAAETR4IqGABg/XfTIrYJMp0W+R7vmOfZynIT14z+te1lJr+tBF4wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTVL8AAJaAJpU7NMCAAAAAASUVORK5CYIIxMDEz',
+
+ GB: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFERTU2NTJEMEQyRDExRTY5MUVCQTMxOUMzRTQ4OUQ4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFERTU2NTJFMEQyRDExRTY5MUVCQTMxOUMzRTQ4OUQ4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MURFNTY1MkIwRDJEMTFFNjkxRUJBMzE5QzNFNDg5RDgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MURFNTY1MkMwRDJEMTFFNjkxRUJBMzE5QzNFNDg5RDgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4LW+oDAAAIsElEQVR42sxZ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',
+
+ US: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAiCAIAAABgN0jYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkFBOEQ0MUQxMEQyRDExRTY4NzY1OUZEN0M0RTRGNDEzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkFBOEQ0MUQyMEQyRDExRTY4NzY1OUZEN0M0RTRGNDEzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QUE4RDQxQ0YwRDJEMTFFNjg3NjU5RkQ3QzRFNEY0MTMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QUE4RDQxRDAwRDJEMTFFNjg3NjU5RkQ3QzRFNEY0MTMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6Xh7i9AAAGGElEQVR42uxX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',
+};
diff --git a/vue-options-api-demos/listview/default-scrolling/main.js b/vue-options-api-demos/listview/default-scrolling/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listview/default-scrolling/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listview/default-scrolling/main.vue b/vue-options-api-demos/listview/default-scrolling/main.vue
new file mode 100644
index 00000000..f056f684
--- /dev/null
+++ b/vue-options-api-demos/listview/default-scrolling/main.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ props.dataItem.full_name }}
+
+
+ {{ props.dataItem.phone }}
+
+
+
+
+
+ Call
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/listview/editing/ItemRender.vue b/vue-options-api-demos/listview/editing/ItemRender.vue
new file mode 100644
index 00000000..1172f4aa
--- /dev/null
+++ b/vue-options-api-demos/listview/editing/ItemRender.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+ Name:
+ handleChange(e, 'ProductName')"
+ />
+ Category:
+ handleChange(e, 'Category')"
+ />
+
+
+ Price:
+ handleChange(e, 'UnitPrice')"
+ />
+ Available:
+ handleChange(e, 'UnitsInStock')"
+ />
+
+
+
+ Save
+
+
+ Cancel
+
+
+
+
+
+
+
+
+ {{ dataItem.ProductName }}
+
+ {{ dataItem.Category.CategoryName }}
+
+
+
+ Price:{{ ' ' }}
+ {{ formattedPrice }}
+
+
Available units: {{ dataItem.UnitsInStock }}
+
+
+
+ Edit
+
+
+ Delete
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/listview/editing/main.js b/vue-options-api-demos/listview/editing/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listview/editing/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listview/editing/main.vue b/vue-options-api-demos/listview/editing/main.vue
new file mode 100644
index 00000000..b6e57acb
--- /dev/null
+++ b/vue-options-api-demos/listview/editing/main.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+ Product list
+
+
+
+
+
diff --git a/vue-options-api-demos/listview/editing/products.json b/vue-options-api-demos/listview/editing/products.json
new file mode 100644
index 00000000..3da39edd
--- /dev/null
+++ b/vue-options-api-demos/listview/editing/products.json
@@ -0,0 +1,1234 @@
+
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/listview/endless-scrolling/destinations.json b/vue-options-api-demos/listview/endless-scrolling/destinations.json
new file mode 100644
index 00000000..542eb216
--- /dev/null
+++ b/vue-options-api-demos/listview/endless-scrolling/destinations.json
@@ -0,0 +1,117 @@
+[
+ {
+ "Destination": "BRUSSELS, BELGIUM",
+ "Text": "Chocolate, beer, music and surrealism.",
+ "Image": "brussels-180x150.png"
+ },
+ {
+ "Destination": "PORTO, PORTUGAL",
+ "Text": "Taste it, drink it, eat it, love it. Bem-vindo ao Porto!",
+ "Image": "porto-180x150.png"
+ },
+ {
+ "Destination": "MALAGA, SPAIN",
+ "Text": "Enjoy the perfect climat.",
+ "Image": "malaga-180x150.png"
+ },
+ {
+ "Destination": "BUDAPEST, HUNGARY",
+ "Text": "One of the most exciting cities in the world.",
+ "Image": "budapest-180x150.png"
+ },
+ {
+ "Destination": "BRATISLAVA, SLOVAKIA",
+ "Text": "A modern city on the Danube.",
+ "Image": "bratislava-180x150.png"
+ },
+ {
+ "Destination": "FLORENCE, ITALY",
+ "Text": "Love and culture are everywhere!",
+ "Image": "florence-180x150.png"
+ },
+ {
+ "Destination": "POZNAN, POLAND",
+ "Text": "A unique heritage with rich cultural offer.",
+ "Image": "poznan-180x150.png"
+ },
+ {
+ "Destination": "ATHENS, GREECE",
+ "Text": "The biggest open-air museum in Europe.",
+ "Image": "athens-180x150.png"
+ },
+ {
+ "Destination": "SOFIA, BULGARIA",
+ "Text": "One of Europe's oldest cities.",
+ "Image": "sofia-180x150.png"
+ },
+ {
+ "Destination": "BORDEAUX, FRANCE",
+ "Text": "Discover exciting new facets of its character.",
+ "Image": "bordeaux-180x150.png"
+ },
+ {
+ "Destination": "GENEVA, SWITZERLAND",
+ "Text": "One of the most welcoming cities in Europe.",
+ "Image": "geneva-180x150.png"
+ },
+ {
+ "Destination": "RIGA, LATVIA",
+ "Text": "At the crossroads of various nations and cultures.",
+ "Image": "riga-180x150.png"
+ },
+ {
+ "Destination": "SEVILLE, SPAIN",
+ "Text": "Seville. Any time of year…",
+ "Image": "seville-180x150.png"
+ },
+ {
+ "Destination": "COLMAR, FRANCE",
+ "Text": "A condensed version of the Alsace region.",
+ "Image": "colmar-180x150.png"
+ },
+ {
+ "Destination": "VIENNA, AUSTRIA",
+ "Text": "The Giant Ferris Wheel is awaiting you.",
+ "Image": "vienna-180x150.png"
+ },
+ {
+ "Destination": "MONTPELLIER, FRANCE",
+ "Text": "Smart, Mediterranean, attractive, welcoming and festive.",
+ "Image": "montpellier-180x150.png"
+ },
+ {
+ "Destination": "VALENCIA, SPAIN",
+ "Text": "Sun, culture, history and future. ",
+ "Image": "valencia-180x150.png"
+ },
+ {
+ "Destination": "BARCELONA, SPAIN",
+ "Text": "Barcelona never sleeps.",
+ "Image": "barcelona-180x150.png"
+ },
+ {
+ "Destination": "MILAN, ITALY",
+ "Text": "The hub of Italian culture",
+ "Image": "milan-180x150.png"
+ },
+ {
+ "Destination": "GDANSK, POLAND",
+ "Text": "You'll be amazed by the beauty of Gdansk.",
+ "Image": "gdansk-180x150.png"
+ },
+ {
+ "Destination": "ROME, ITALY",
+ "Text": "Treat yourself to a stay in the Eternal City.",
+ "Image": "rome-180x150.png"
+ },
+ {
+ "Destination": "EDINBURGH, SCOTLAND",
+ "Text": "Shopping, dining & architectural splendour.",
+ "Image": "edinburgh-180x150.png"
+ },
+ {
+ "Destination": "LISBON, PORTUGAL",
+ "Text": "The pure pleasure of being in one of the best cities in the world.",
+ "Image": "lisbon-180x150.png"
+ }
+]
diff --git a/vue-options-api-demos/listview/endless-scrolling/main.js b/vue-options-api-demos/listview/endless-scrolling/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listview/endless-scrolling/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listview/endless-scrolling/main.vue b/vue-options-api-demos/listview/endless-scrolling/main.vue
new file mode 100644
index 00000000..542b027f
--- /dev/null
+++ b/vue-options-api-demos/listview/endless-scrolling/main.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+ {{ props.dataItem.Destination }}
+
+
+ {{ props.dataItem.Text }}
+
+
+
+
+
+
+ Top European destinations
+
+
+
+
+
+
diff --git a/vue-options-api-demos/listview/events/Logger.vue b/vue-options-api-demos/listview/events/Logger.vue
new file mode 100644
index 00000000..7d9e1695
--- /dev/null
+++ b/vue-options-api-demos/listview/events/Logger.vue
@@ -0,0 +1,45 @@
+
+
+
{{ title }}
+
+
+ {{ events.length - idx }}. {{ event }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/listview/events/main.js b/vue-options-api-demos/listview/events/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listview/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listview/events/main.vue b/vue-options-api-demos/listview/events/main.vue
new file mode 100644
index 00000000..0b3038a3
--- /dev/null
+++ b/vue-options-api-demos/listview/events/main.vue
@@ -0,0 +1,49 @@
+
+
+
+
+ {{ props.dataItem.ProductName }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/listview/events/products.json b/vue-options-api-demos/listview/events/products.json
new file mode 100644
index 00000000..3da39edd
--- /dev/null
+++ b/vue-options-api-demos/listview/events/products.json
@@ -0,0 +1,1234 @@
+
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/listview/filtering/main.js b/vue-options-api-demos/listview/filtering/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listview/filtering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listview/filtering/main.vue b/vue-options-api-demos/listview/filtering/main.vue
new file mode 100644
index 00000000..4a1e8b6e
--- /dev/null
+++ b/vue-options-api-demos/listview/filtering/main.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+ {{ props.dataItem.ProductName }}
+
+
+ {{ props.dataItem.Category.CategoryName }}
+
+
+
+
+ Price:{{ ' ' }}
+ {{ getFormattedPrice(props.dataItem.UnitPrice) }}
+
+ Available units: {{ props.dataItem.UnitsInStock }}
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/listview/filtering/products.json b/vue-options-api-demos/listview/filtering/products.json
new file mode 100644
index 00000000..3da39edd
--- /dev/null
+++ b/vue-options-api-demos/listview/filtering/products.json
@@ -0,0 +1,1234 @@
+
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/listview/footer-template/main.js b/vue-options-api-demos/listview/footer-template/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listview/footer-template/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listview/footer-template/main.vue b/vue-options-api-demos/listview/footer-template/main.vue
new file mode 100644
index 00000000..1d299021
--- /dev/null
+++ b/vue-options-api-demos/listview/footer-template/main.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
{{ props.dataItem.ProductName }}
+
+ {{ props.dataItem.Category.CategoryName }}
+
+
+
+
${{ props.dataItem.UnitPrice }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/listview/footer-template/products.json b/vue-options-api-demos/listview/footer-template/products.json
new file mode 100644
index 00000000..3da39edd
--- /dev/null
+++ b/vue-options-api-demos/listview/footer-template/products.json
@@ -0,0 +1,1234 @@
+
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/listview/get-started/main.js b/vue-options-api-demos/listview/get-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listview/get-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listview/get-started/main.vue b/vue-options-api-demos/listview/get-started/main.vue
new file mode 100644
index 00000000..eaa9dab4
--- /dev/null
+++ b/vue-options-api-demos/listview/get-started/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
+ {{ props.dataItem.ProductName }}
+
+
+
+
+
diff --git a/vue-options-api-demos/listview/get-started/products.json b/vue-options-api-demos/listview/get-started/products.json
new file mode 100644
index 00000000..3da39edd
--- /dev/null
+++ b/vue-options-api-demos/listview/get-started/products.json
@@ -0,0 +1,1234 @@
+
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/listview/header-template/main.js b/vue-options-api-demos/listview/header-template/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listview/header-template/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listview/header-template/main.vue b/vue-options-api-demos/listview/header-template/main.vue
new file mode 100644
index 00000000..eba8e02d
--- /dev/null
+++ b/vue-options-api-demos/listview/header-template/main.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
{{ props.dataItem.ProductName }}
+
+ {{ props.dataItem.Category.CategoryName }}
+
+
+
+
${{ props.dataItem.UnitPrice }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/listview/header-template/products.json b/vue-options-api-demos/listview/header-template/products.json
new file mode 100644
index 00000000..3da39edd
--- /dev/null
+++ b/vue-options-api-demos/listview/header-template/products.json
@@ -0,0 +1,1234 @@
+
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/listview/item-template/main.js b/vue-options-api-demos/listview/item-template/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listview/item-template/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listview/item-template/main.vue b/vue-options-api-demos/listview/item-template/main.vue
new file mode 100644
index 00000000..4e694995
--- /dev/null
+++ b/vue-options-api-demos/listview/item-template/main.vue
@@ -0,0 +1,66 @@
+
+
+
+
+ [{{ props.dataItem.ProductID }}]:
+ {{ props.dataItem.ProductName }}
+ ({{
+ isFirst(props.dataItem.ProductID)
+ ? 'first'
+ : isLast(props.dataItem.ProductID)
+ ? 'last'
+ : 'mid'
+ }})
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/listview/item-template/products.json b/vue-options-api-demos/listview/item-template/products.json
new file mode 100644
index 00000000..3da39edd
--- /dev/null
+++ b/vue-options-api-demos/listview/item-template/products.json
@@ -0,0 +1,1234 @@
+
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/listview/overview/contacts.json b/vue-options-api-demos/listview/overview/contacts.json
new file mode 100644
index 00000000..3c97d01d
--- /dev/null
+++ b/vue-options-api-demos/listview/overview/contacts.json
@@ -0,0 +1,45 @@
+[
+ {
+ "id": 1,
+ "name": "Jenson Delaney",
+ "email": "jenson.delany@mail.com",
+ "messagesCount": 3
+ },
+ {
+ "id": 2,
+ "name": "Amaya Coffey",
+ "email": "amaya.coffey@mail.com",
+ "messagesCount": 1
+ },
+ {
+ "id": 3,
+ "name": "Habib Joyce",
+ "email": "habib.joyce@mail.com",
+ "messagesCount": 5
+ },
+ {
+ "id": 4,
+ "name": "Lilly-Ann Roche",
+ "email": "lilly-ann.roche@mail.com",
+ "messagesCount": 8
+ },
+ {
+ "id": 5,
+ "name": "Giulia Haworth",
+ "email": "giulia.haworth@mail.com",
+ "messagesCount": 3
+ },
+ {
+ "id": 6,
+ "name": "Dawson Humphrey",
+ "email": "dawson.humphrey@mail.com",
+ "messagesCount": 2
+ },
+ {
+ "id": 7,
+ "name": "Reilly McCullough",
+ "email": "reilly.mccullough@mail.com",
+ "messagesCount": 3
+ }
+ ]
+
\ No newline at end of file
diff --git a/vue-options-api-demos/listview/overview/main.js b/vue-options-api-demos/listview/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listview/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listview/overview/main.vue b/vue-options-api-demos/listview/overview/main.vue
new file mode 100644
index 00000000..f8c839bf
--- /dev/null
+++ b/vue-options-api-demos/listview/overview/main.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ props.dataItem.name }}
+
+
+ {{ props.dataItem.email }}
+
+
+
+
+
+ {{ props.dataItem.messagesCount }} new messages
+
+
+
+
+
+
+
+ Contact list
+
+
+
+
+ {{ messages }} unread messages in total
+
+
+
+
+
diff --git a/vue-options-api-demos/listview/paging/articles.json b/vue-options-api-demos/listview/paging/articles.json
new file mode 100644
index 00000000..fc3e9449
--- /dev/null
+++ b/vue-options-api-demos/listview/paging/articles.json
@@ -0,0 +1,152 @@
+[
+ {
+ "Title": "How to Make Games for Everyone",
+ "Subtitle": "Why the new player’s experience matters",
+ "Date": "Jan 21, 2020",
+ "Image": "1-220x140.png"
+ },
+ {
+ "Title": "How to design with love?",
+ "Subtitle": "7 tips to fall in love with your job.",
+ "Date": "Feb 24, 2020",
+ "Image": "2-220x140.png"
+ },
+ {
+ "Title": "A good designer is an Emotional Polymath — what?",
+ "Subtitle": "Polymaths describes a person whose expertise spans a significant number of realities. ",
+ "Date": "Jan 16, 2020",
+ "Image": "3-220x140.png"
+ },
+ {
+ "Title": "Why Minimalist Logos Are the Best for Big Business",
+ "Subtitle": "Analyzing logos from giants like Netflix, Youtube, and Google",
+ "Date": "Feb 20, 2020",
+ "Image": "4-220x140.png"
+ },
+ {
+ "Title": "Money, Likes, and Memes Are All the Same Thing",
+ "Subtitle": "How the token economy has replaced cash with Twitch emotes and Instagram likes",
+ "Date": "Feb 13, 2020",
+ "Image": "5-220x140.png"
+ },
+ {
+ "Title": "From UX to UI development",
+ "Subtitle": "The transition between the stages of the digital design process",
+ "Date": "Jan 11, 2020",
+ "Image": "6-220x140.png"
+ },
+ {
+ "Title": "7 Things Mentally Strong People Avoid Doing",
+ "Subtitle": "Become your own mental strength coach",
+ "Date": "Jan 17, 2020",
+ "Image": "7-220x140.png"
+ },
+ {
+ "Title": "How to Solve Your 'Lack of Motivation' Problem",
+ "Subtitle": "Hint: Understand that lack of motivation is a lie.",
+ "Date": "Mar 5, 2020",
+ "Image": "8-220x140.png"
+ },
+ {
+ "Title": "Make it a habit to externalize your design work",
+ "Subtitle": "Move faster by revealing the process through sketches, whiteboards and by printing your work out",
+ "Date": "Feb 12, 2020",
+ "Image": "9-220x140.png"
+ },
+ {
+ "Title": "Morning Routines That Will Help You Feel More Energized",
+ "Subtitle": "Skip your cup of coffee and do these instead.",
+ "Date": "Feb 19, 2020",
+ "Image": "10-220x140.png"
+ },
+ {
+ "Title": "What Color is Your Name? A New Synesthesia Tool Will Show You",
+ "Subtitle": "Here's your chance to see how people with synesthesia perceive letters and numbers",
+ "Date": "Feb 3, 2020",
+ "Image": "11-220x140.png"
+ },
+ {
+ "Title": "When it comes to design, your eyes are way better than maths",
+ "Subtitle": "A quick look at how mathematics is not the ultimate source of design thruth",
+ "Date": "Feb 22, 2020",
+ "Image": "12-220x140.png"
+ },
+ {
+ "Title": "Microinteractions: small details matter",
+ "Subtitle": "Microinteractions are the small details that exist inside features. ",
+ "Date": "Jan 7, 2020",
+ "Image": "13-220x140.png"
+ },
+ {
+ "Title": "Key principles in animation",
+ "Subtitle": "Animated interfaces are full of life and emotions. Animations add life to static things.",
+ "Date": "Mar 24, 2020",
+ "Image": "14-220x140.png"
+ },
+ {
+ "Title": "The 60-30-10 Rule of Time Management",
+ "Subtitle": "A simple framework for allocating your time.",
+ "Date": "Mar 13, 2020",
+ "Image": "15-220x140.png"
+ },
+ {
+ "Title": "Real-time mobile UI/UX prototyping with Figma Mirror",
+ "Subtitle": "Today many design teams are transferring their design system from Sketch and Adobe XD to Figma.",
+ "Date": "Jan 30, 2020",
+ "Image": "16-220x140.png"
+ },
+ {
+ "Title": "5 apps that will turn your mobile phone into a productivity machine",
+ "Subtitle": "Instead of letting your mobile device become detrimental to your productivity, here are tips to turn your phone into a productivity machine.",
+ "Date": "Jan 9, 2020",
+ "Image": "17-220x140.png"
+ },
+ {
+ "Title": "Lessons I've Learned From Studying Money for 10 Years",
+ "Subtitle": "Master money, and you'll be able to do more work you enjoy and less work of the bill-paying variety.",
+ "Date": "Mar 14, 2020",
+ "Image": "18-220x140.png"
+ },
+ {
+ "Title": "The 5-Year Rule: How to Create the Future You Want",
+ "Subtitle": "A proven process for building your dream life",
+ "Date": "Feb 11, 2020",
+ "Image": "19-220x140.png"
+ },
+ {
+ "Title": "Creativity is only impressive when there's restrictions",
+ "Subtitle": "Why 'form follows function' is a valid design principle in today's web design landscape",
+ "Date": "Feb 18, 2020",
+ "Image": "20-220x140.png"
+ },
+ {
+ "Title": "3 areas of focus to becoming a better Product Designer",
+ "Subtitle": "Close Sketch. Stop browsing Dribbble. Forget color for a second.",
+ "Date": "Jan 23, 2020",
+ "Image": "21-220x140.png"
+ },
+ {
+ "Title": "The secret of usable design",
+ "Subtitle": "Improving usability through emotional, reflective and visceral design.",
+ "Date": "Feb 26, 2020",
+ "Image": "22-220x140.png"
+ },
+ {
+ "Title": "When You Eat Is More Important Than What You Eat",
+ "Subtitle": "A practical guide to time-restricted eating",
+ "Date": "Mar 23, 2020",
+ "Image": "23-220x140.png"
+ },
+ {
+ "Title": "Breaking into Design",
+ "Subtitle": "How to grow as a designer and land your first position in the field",
+ "Date": "Mar 4, 2020",
+ "Image": "24-220x140.png"
+ },
+ {
+ "Title": "What's the Difference Between Brand and Brand Identity",
+ "Subtitle": "Semantics and the Quest for Truth",
+ "Date": "Feb 16, 2020",
+ "Image": "25-220x140.png"
+ }
+]
diff --git a/vue-options-api-demos/listview/paging/main.js b/vue-options-api-demos/listview/paging/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/listview/paging/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/listview/paging/main.vue b/vue-options-api-demos/listview/paging/main.vue
new file mode 100644
index 00000000..f6075e6f
--- /dev/null
+++ b/vue-options-api-demos/listview/paging/main.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+ {{
+ props.dataItem.Title
+ }}
+
+ {{ props.dataItem.Subtitle }}
+
+ {{
+ props.dataItem.Date
+ }}
+
+
+
+ Save for later
+
+
+ Add to favorites
+
+
+
+
+
+
+
+
+ TRENDING ARTICLES THIS WEEK
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/listview/shared/articles.json b/vue-options-api-demos/listview/shared/articles.json
new file mode 100644
index 00000000..fc3e9449
--- /dev/null
+++ b/vue-options-api-demos/listview/shared/articles.json
@@ -0,0 +1,152 @@
+[
+ {
+ "Title": "How to Make Games for Everyone",
+ "Subtitle": "Why the new player’s experience matters",
+ "Date": "Jan 21, 2020",
+ "Image": "1-220x140.png"
+ },
+ {
+ "Title": "How to design with love?",
+ "Subtitle": "7 tips to fall in love with your job.",
+ "Date": "Feb 24, 2020",
+ "Image": "2-220x140.png"
+ },
+ {
+ "Title": "A good designer is an Emotional Polymath — what?",
+ "Subtitle": "Polymaths describes a person whose expertise spans a significant number of realities. ",
+ "Date": "Jan 16, 2020",
+ "Image": "3-220x140.png"
+ },
+ {
+ "Title": "Why Minimalist Logos Are the Best for Big Business",
+ "Subtitle": "Analyzing logos from giants like Netflix, Youtube, and Google",
+ "Date": "Feb 20, 2020",
+ "Image": "4-220x140.png"
+ },
+ {
+ "Title": "Money, Likes, and Memes Are All the Same Thing",
+ "Subtitle": "How the token economy has replaced cash with Twitch emotes and Instagram likes",
+ "Date": "Feb 13, 2020",
+ "Image": "5-220x140.png"
+ },
+ {
+ "Title": "From UX to UI development",
+ "Subtitle": "The transition between the stages of the digital design process",
+ "Date": "Jan 11, 2020",
+ "Image": "6-220x140.png"
+ },
+ {
+ "Title": "7 Things Mentally Strong People Avoid Doing",
+ "Subtitle": "Become your own mental strength coach",
+ "Date": "Jan 17, 2020",
+ "Image": "7-220x140.png"
+ },
+ {
+ "Title": "How to Solve Your 'Lack of Motivation' Problem",
+ "Subtitle": "Hint: Understand that lack of motivation is a lie.",
+ "Date": "Mar 5, 2020",
+ "Image": "8-220x140.png"
+ },
+ {
+ "Title": "Make it a habit to externalize your design work",
+ "Subtitle": "Move faster by revealing the process through sketches, whiteboards and by printing your work out",
+ "Date": "Feb 12, 2020",
+ "Image": "9-220x140.png"
+ },
+ {
+ "Title": "Morning Routines That Will Help You Feel More Energized",
+ "Subtitle": "Skip your cup of coffee and do these instead.",
+ "Date": "Feb 19, 2020",
+ "Image": "10-220x140.png"
+ },
+ {
+ "Title": "What Color is Your Name? A New Synesthesia Tool Will Show You",
+ "Subtitle": "Here's your chance to see how people with synesthesia perceive letters and numbers",
+ "Date": "Feb 3, 2020",
+ "Image": "11-220x140.png"
+ },
+ {
+ "Title": "When it comes to design, your eyes are way better than maths",
+ "Subtitle": "A quick look at how mathematics is not the ultimate source of design thruth",
+ "Date": "Feb 22, 2020",
+ "Image": "12-220x140.png"
+ },
+ {
+ "Title": "Microinteractions: small details matter",
+ "Subtitle": "Microinteractions are the small details that exist inside features. ",
+ "Date": "Jan 7, 2020",
+ "Image": "13-220x140.png"
+ },
+ {
+ "Title": "Key principles in animation",
+ "Subtitle": "Animated interfaces are full of life and emotions. Animations add life to static things.",
+ "Date": "Mar 24, 2020",
+ "Image": "14-220x140.png"
+ },
+ {
+ "Title": "The 60-30-10 Rule of Time Management",
+ "Subtitle": "A simple framework for allocating your time.",
+ "Date": "Mar 13, 2020",
+ "Image": "15-220x140.png"
+ },
+ {
+ "Title": "Real-time mobile UI/UX prototyping with Figma Mirror",
+ "Subtitle": "Today many design teams are transferring their design system from Sketch and Adobe XD to Figma.",
+ "Date": "Jan 30, 2020",
+ "Image": "16-220x140.png"
+ },
+ {
+ "Title": "5 apps that will turn your mobile phone into a productivity machine",
+ "Subtitle": "Instead of letting your mobile device become detrimental to your productivity, here are tips to turn your phone into a productivity machine.",
+ "Date": "Jan 9, 2020",
+ "Image": "17-220x140.png"
+ },
+ {
+ "Title": "Lessons I've Learned From Studying Money for 10 Years",
+ "Subtitle": "Master money, and you'll be able to do more work you enjoy and less work of the bill-paying variety.",
+ "Date": "Mar 14, 2020",
+ "Image": "18-220x140.png"
+ },
+ {
+ "Title": "The 5-Year Rule: How to Create the Future You Want",
+ "Subtitle": "A proven process for building your dream life",
+ "Date": "Feb 11, 2020",
+ "Image": "19-220x140.png"
+ },
+ {
+ "Title": "Creativity is only impressive when there's restrictions",
+ "Subtitle": "Why 'form follows function' is a valid design principle in today's web design landscape",
+ "Date": "Feb 18, 2020",
+ "Image": "20-220x140.png"
+ },
+ {
+ "Title": "3 areas of focus to becoming a better Product Designer",
+ "Subtitle": "Close Sketch. Stop browsing Dribbble. Forget color for a second.",
+ "Date": "Jan 23, 2020",
+ "Image": "21-220x140.png"
+ },
+ {
+ "Title": "The secret of usable design",
+ "Subtitle": "Improving usability through emotional, reflective and visceral design.",
+ "Date": "Feb 26, 2020",
+ "Image": "22-220x140.png"
+ },
+ {
+ "Title": "When You Eat Is More Important Than What You Eat",
+ "Subtitle": "A practical guide to time-restricted eating",
+ "Date": "Mar 23, 2020",
+ "Image": "23-220x140.png"
+ },
+ {
+ "Title": "Breaking into Design",
+ "Subtitle": "How to grow as a designer and land your first position in the field",
+ "Date": "Mar 4, 2020",
+ "Image": "24-220x140.png"
+ },
+ {
+ "Title": "What's the Difference Between Brand and Brand Identity",
+ "Subtitle": "Semantics and the Quest for Truth",
+ "Date": "Feb 16, 2020",
+ "Image": "25-220x140.png"
+ }
+]
diff --git a/vue-options-api-demos/listview/shared/contacts.json b/vue-options-api-demos/listview/shared/contacts.json
new file mode 100644
index 00000000..3c97d01d
--- /dev/null
+++ b/vue-options-api-demos/listview/shared/contacts.json
@@ -0,0 +1,45 @@
+[
+ {
+ "id": 1,
+ "name": "Jenson Delaney",
+ "email": "jenson.delany@mail.com",
+ "messagesCount": 3
+ },
+ {
+ "id": 2,
+ "name": "Amaya Coffey",
+ "email": "amaya.coffey@mail.com",
+ "messagesCount": 1
+ },
+ {
+ "id": 3,
+ "name": "Habib Joyce",
+ "email": "habib.joyce@mail.com",
+ "messagesCount": 5
+ },
+ {
+ "id": 4,
+ "name": "Lilly-Ann Roche",
+ "email": "lilly-ann.roche@mail.com",
+ "messagesCount": 8
+ },
+ {
+ "id": 5,
+ "name": "Giulia Haworth",
+ "email": "giulia.haworth@mail.com",
+ "messagesCount": 3
+ },
+ {
+ "id": 6,
+ "name": "Dawson Humphrey",
+ "email": "dawson.humphrey@mail.com",
+ "messagesCount": 2
+ },
+ {
+ "id": 7,
+ "name": "Reilly McCullough",
+ "email": "reilly.mccullough@mail.com",
+ "messagesCount": 3
+ }
+ ]
+
\ No newline at end of file
diff --git a/vue-options-api-demos/listview/shared/destinations.json b/vue-options-api-demos/listview/shared/destinations.json
new file mode 100644
index 00000000..542eb216
--- /dev/null
+++ b/vue-options-api-demos/listview/shared/destinations.json
@@ -0,0 +1,117 @@
+[
+ {
+ "Destination": "BRUSSELS, BELGIUM",
+ "Text": "Chocolate, beer, music and surrealism.",
+ "Image": "brussels-180x150.png"
+ },
+ {
+ "Destination": "PORTO, PORTUGAL",
+ "Text": "Taste it, drink it, eat it, love it. Bem-vindo ao Porto!",
+ "Image": "porto-180x150.png"
+ },
+ {
+ "Destination": "MALAGA, SPAIN",
+ "Text": "Enjoy the perfect climat.",
+ "Image": "malaga-180x150.png"
+ },
+ {
+ "Destination": "BUDAPEST, HUNGARY",
+ "Text": "One of the most exciting cities in the world.",
+ "Image": "budapest-180x150.png"
+ },
+ {
+ "Destination": "BRATISLAVA, SLOVAKIA",
+ "Text": "A modern city on the Danube.",
+ "Image": "bratislava-180x150.png"
+ },
+ {
+ "Destination": "FLORENCE, ITALY",
+ "Text": "Love and culture are everywhere!",
+ "Image": "florence-180x150.png"
+ },
+ {
+ "Destination": "POZNAN, POLAND",
+ "Text": "A unique heritage with rich cultural offer.",
+ "Image": "poznan-180x150.png"
+ },
+ {
+ "Destination": "ATHENS, GREECE",
+ "Text": "The biggest open-air museum in Europe.",
+ "Image": "athens-180x150.png"
+ },
+ {
+ "Destination": "SOFIA, BULGARIA",
+ "Text": "One of Europe's oldest cities.",
+ "Image": "sofia-180x150.png"
+ },
+ {
+ "Destination": "BORDEAUX, FRANCE",
+ "Text": "Discover exciting new facets of its character.",
+ "Image": "bordeaux-180x150.png"
+ },
+ {
+ "Destination": "GENEVA, SWITZERLAND",
+ "Text": "One of the most welcoming cities in Europe.",
+ "Image": "geneva-180x150.png"
+ },
+ {
+ "Destination": "RIGA, LATVIA",
+ "Text": "At the crossroads of various nations and cultures.",
+ "Image": "riga-180x150.png"
+ },
+ {
+ "Destination": "SEVILLE, SPAIN",
+ "Text": "Seville. Any time of year…",
+ "Image": "seville-180x150.png"
+ },
+ {
+ "Destination": "COLMAR, FRANCE",
+ "Text": "A condensed version of the Alsace region.",
+ "Image": "colmar-180x150.png"
+ },
+ {
+ "Destination": "VIENNA, AUSTRIA",
+ "Text": "The Giant Ferris Wheel is awaiting you.",
+ "Image": "vienna-180x150.png"
+ },
+ {
+ "Destination": "MONTPELLIER, FRANCE",
+ "Text": "Smart, Mediterranean, attractive, welcoming and festive.",
+ "Image": "montpellier-180x150.png"
+ },
+ {
+ "Destination": "VALENCIA, SPAIN",
+ "Text": "Sun, culture, history and future. ",
+ "Image": "valencia-180x150.png"
+ },
+ {
+ "Destination": "BARCELONA, SPAIN",
+ "Text": "Barcelona never sleeps.",
+ "Image": "barcelona-180x150.png"
+ },
+ {
+ "Destination": "MILAN, ITALY",
+ "Text": "The hub of Italian culture",
+ "Image": "milan-180x150.png"
+ },
+ {
+ "Destination": "GDANSK, POLAND",
+ "Text": "You'll be amazed by the beauty of Gdansk.",
+ "Image": "gdansk-180x150.png"
+ },
+ {
+ "Destination": "ROME, ITALY",
+ "Text": "Treat yourself to a stay in the Eternal City.",
+ "Image": "rome-180x150.png"
+ },
+ {
+ "Destination": "EDINBURGH, SCOTLAND",
+ "Text": "Shopping, dining & architectural splendour.",
+ "Image": "edinburgh-180x150.png"
+ },
+ {
+ "Destination": "LISBON, PORTUGAL",
+ "Text": "The pure pleasure of being in one of the best cities in the world.",
+ "Image": "lisbon-180x150.png"
+ }
+]
diff --git a/vue-options-api-demos/listview/shared/products.json b/vue-options-api-demos/listview/shared/products.json
new file mode 100644
index 00000000..3da39edd
--- /dev/null
+++ b/vue-options-api-demos/listview/shared/products.json
@@ -0,0 +1,1234 @@
+
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/notification/animation/main.js b/vue-options-api-demos/notification/animation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/notification/animation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/notification/animation/main.vue b/vue-options-api-demos/notification/animation/main.vue
new file mode 100644
index 00000000..8e7d6c37
--- /dev/null
+++ b/vue-options-api-demos/notification/animation/main.vue
@@ -0,0 +1,149 @@
+
+
+
+ {{ (success ? 'Hide ' : 'Show ') + 'Success with Slide Animation' }}
+
+
+
+
+ {{ (error ? 'Hide ' : 'Show ') + 'Error with Expand Animation' }}
+
+
+
+
+ {{ (warning ? 'Hide ' : 'Show ') + 'Warning with Reveal Animation' }}
+
+
+
+
+ {{ (info ? 'Hide ' : 'Show ') + 'Info' }}
+
+
+
+
+ {{ (none ? 'Hide ' : 'Show ') + 'Unstyled with Push Animation' }}
+
+
+
+
+ Your data has been saved.
+
+
+
+
+ Oops! Something went wrong ...
+
+
+
+
+ Your password will expire in 2 days!
+
+
+
+
+ You have 1 new message!
+
+
+
+
+ Hanna Moos likes your status.
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/notification/animation/styles.css b/vue-options-api-demos/notification/animation/styles.css
new file mode 100644
index 00000000..8bb7204a
--- /dev/null
+++ b/vue-options-api-demos/notification/animation/styles.css
@@ -0,0 +1,3 @@
+.k-notification-container {
+ margin: 6px;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/notification/events/Logger.vue b/vue-options-api-demos/notification/events/Logger.vue
new file mode 100644
index 00000000..7d9e1695
--- /dev/null
+++ b/vue-options-api-demos/notification/events/Logger.vue
@@ -0,0 +1,45 @@
+
+
+
{{ title }}
+
+
+ {{ events.length - idx }}. {{ event }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/notification/events/main.js b/vue-options-api-demos/notification/events/main.js
new file mode 100644
index 00000000..1f1c6c86
--- /dev/null
+++ b/vue-options-api-demos/notification/events/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
+
diff --git a/vue-options-api-demos/notification/events/main.vue b/vue-options-api-demos/notification/events/main.vue
new file mode 100644
index 00000000..057e5c67
--- /dev/null
+++ b/vue-options-api-demos/notification/events/main.vue
@@ -0,0 +1,139 @@
+
+
+ Show Success
+
+ Show Error
+
+ Show Warning
+
+
+ {{ (info ? 'Hide ' : 'Show ') + 'Info' }}
+
+
+ Show Default
+
+
+
+ Your data has been saved.
+
+
+
+
+ Oops! Something went wrong ...
+
+
+
+
+ Your password will expire in 2 days!
+
+
+
+
+ You have 1 new message!
+
+
+
+
+ Hanna Moos likes your status.
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/notification/get-started/main.js b/vue-options-api-demos/notification/get-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/notification/get-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/notification/get-started/main.vue b/vue-options-api-demos/notification/get-started/main.vue
new file mode 100644
index 00000000..e7da0ca7
--- /dev/null
+++ b/vue-options-api-demos/notification/get-started/main.vue
@@ -0,0 +1,56 @@
+
+
+ Save data
+
+
+
+ Your data has been saved.
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/notification/get-started/styles.css b/vue-options-api-demos/notification/get-started/styles.css
new file mode 100644
index 00000000..8bb7204a
--- /dev/null
+++ b/vue-options-api-demos/notification/get-started/styles.css
@@ -0,0 +1,3 @@
+.k-notification-container {
+ margin: 6px;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/notification/overview/main.js b/vue-options-api-demos/notification/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/notification/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/notification/overview/main.vue b/vue-options-api-demos/notification/overview/main.vue
new file mode 100644
index 00000000..398cf489
--- /dev/null
+++ b/vue-options-api-demos/notification/overview/main.vue
@@ -0,0 +1,135 @@
+
+
+
+ {{ (success ? 'Hide ' : 'Show ') + 'Success' }}
+
+
+
+ {{ (error ? 'Hide ' : 'Show ') + 'Error' }}
+
+
+
+ {{ (warning ? 'Hide ' : 'Show ') + 'Warning' }}
+
+
+
+ {{ (info ? 'Hide ' : 'Show ') + 'Info' }}
+
+
+
+ {{ (none ? 'Hide ' : 'Show ') + 'Unstyled' }}
+
+
+
+
+ Your data has been saved.
+
+
+
+
+ Oops! Something went wrong ...
+
+
+
+
+ Your password will expire in 2 days!
+
+
+
+
+ You have 1 new message!
+
+
+
+
+ Hanna Moos likes your status.
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/notification/overview/styles.css b/vue-options-api-demos/notification/overview/styles.css
new file mode 100644
index 00000000..8bb7204a
--- /dev/null
+++ b/vue-options-api-demos/notification/overview/styles.css
@@ -0,0 +1,3 @@
+.k-notification-container {
+ margin: 6px;
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/notification/positions/Notifications.vue b/vue-options-api-demos/notification/positions/Notifications.vue
new file mode 100644
index 00000000..e861174a
--- /dev/null
+++ b/vue-options-api-demos/notification/positions/Notifications.vue
@@ -0,0 +1,22 @@
+
+
+ {{ content }}
+
+
+ {{ content }}
+
+
+
diff --git a/vue-options-api-demos/notification/positions/main.js b/vue-options-api-demos/notification/positions/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/notification/positions/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/notification/positions/main.vue b/vue-options-api-demos/notification/positions/main.vue
new file mode 100644
index 00000000..6f0c4c9f
--- /dev/null
+++ b/vue-options-api-demos/notification/positions/main.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/notification/types/main.js b/vue-options-api-demos/notification/types/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/notification/types/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/notification/types/main.vue b/vue-options-api-demos/notification/types/main.vue
new file mode 100644
index 00000000..0a111ff8
--- /dev/null
+++ b/vue-options-api-demos/notification/types/main.vue
@@ -0,0 +1,124 @@
+
+
+
+ {{ (none ? 'Hide ' : 'Show ') + 'Unstyled' }}
+
+
+
+ {{ (success ? 'Hide ' : 'Show ') + 'Success' }}
+
+
+
+ {{ (error ? 'Hide ' : 'Show ') + 'Error' }}
+
+
+
+ {{ (warning ? 'Hide ' : 'Show ') + 'Warning' }}
+
+
+
+ {{ (info ? 'Hide ' : 'Show ') + 'Info' }}
+
+
+
+
+ Default Notification .
+
+
+ Success Notification
+
+
+ Error Notification
+
+
+ Warning Notification
+
+
+ Info Notification
+
+
+
+
+
+
diff --git a/vue-options-api-demos/pdf/base64/main.js b/vue-options-api-demos/pdf/base64/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/base64/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/base64/main.vue b/vue-options-api-demos/pdf/base64/main.vue
new file mode 100644
index 00000000..e74b6af4
--- /dev/null
+++ b/vue-options-api-demos/pdf/base64/main.vue
@@ -0,0 +1,66 @@
+
+
+
+
+ Export with method
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/pdf/content-scaling/main.js b/vue-options-api-demos/pdf/content-scaling/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/content-scaling/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/content-scaling/main.vue b/vue-options-api-demos/pdf/content-scaling/main.vue
new file mode 100644
index 00000000..7ac33296
--- /dev/null
+++ b/vue-options-api-demos/pdf/content-scaling/main.vue
@@ -0,0 +1,67 @@
+
+
+
+
+ Export PDF
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer felis
+ libero, lobortis ac rutrum quis, varius a velit. Donec lacus erat,
+ cursus sed porta quis, adipiscing et ligula. Duis volutpat, sem pharetra
+ accumsan pharetra, mi ligula cursus felis, ac aliquet leo diam eget
+ risus. Integer facilisis, justo cursus venenatis vehicula, massa nisl
+ tempor sem, in ullamcorper neque mauris in orci.
+
+
+ Ut orci ligula, varius ac consequat in, rhoncus in dolor. Mauris
+ pulvinar molestie accumsan. Vestibulum ante ipsum primis in faucibus
+ orci luctus et ultrices posuere cubilia Curae; Aenean velit ligula,
+ pharetra quis aliquam sed, scelerisque sed sapien. Class aptent taciti
+ sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
+ Aliquam dui mi, vulputate vitae pulvinar ac, condimentum sed eros.
+
+
+ Aliquam at nisl quis est adipiscing bibendum. Nam malesuada eros
+ facilisis arcu vulputate at aliquam nunc tempor. In commodo scelerisque
+ enim, eget sodales lorem condimentum rutrum. Phasellus sem metus,
+ ultricies at commodo in, tristique non est. Morbi vel mauris eget mauris
+ commodo elementum. Nam eget libero lacus, ut sollicitudin ante. Nam odio
+ quam, suscipit a fringilla eget, dignissim nec arcu. Donec tristique
+ arcu ut sapien elementum pellentesque.
+
+
+ Maecenas vitae eros vel enim molestie cursus. Proin ut lacinia ipsum.
+ Nam at elit arcu, at porttitor ipsum. Praesent id viverra lorem. Nam
+ lacinia elementum fermentum. Nulla facilisi. Nulla bibendum erat sed sem
+ interdum suscipit. Vestibulum eget molestie leo. Aliquam erat volutpat.
+ Ut sed nulla libero. Suspendisse id euismod quam. Aliquam interdum
+ turpis vitae purus consectetur in pulvinar libero accumsan. In id augue
+ dui, ac volutpat ante. Suspendisse purus est, ullamcorper id bibendum
+ sed, placerat id leo.
+
+
+
+
+
diff --git a/vue-options-api-demos/pdf/content-styling/class/main.js b/vue-options-api-demos/pdf/content-styling/class/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/content-styling/class/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/content-styling/class/main.vue b/vue-options-api-demos/pdf/content-styling/class/main.vue
new file mode 100644
index 00000000..ec6c145e
--- /dev/null
+++ b/vue-options-api-demos/pdf/content-styling/class/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
+ Export PDF
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer felis libero, lobortis ac rutrum quis,
+ varius
+ a velit. Donec lacus erat, cursus sed porta quis, adipiscing et ligula. Duis volutpat, sem pharetra accumsan
+ pharetra, mi ligula cursus felis, ac aliquet leo diam eget risus. Integer facilisis, justo cursus venenatis
+ vehicula, massa nisl tempor sem, in ullamcorper neque mauris in orci.
+
+
+ Ut orci ligula, varius ac consequat in, rhoncus in dolor. Mauris pulvinar molestie accumsan. Vestibulum ante
+ ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean velit ligula, pharetra quis
+ aliquam sed, scelerisque sed sapien. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
+ inceptos himenaeos. Aliquam dui mi, vulputate vitae pulvinar ac, condimentum sed eros.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/pdf/content-styling/class/styles.css b/vue-options-api-demos/pdf/content-styling/class/styles.css
new file mode 100644
index 00000000..de240e87
--- /dev/null
+++ b/vue-options-api-demos/pdf/content-styling/class/styles.css
@@ -0,0 +1,4 @@
+.k-pdf-export p {
+ border: 2px dashed #aaa;
+ padding: 10px;
+}
diff --git a/vue-options-api-demos/pdf/content-styling/element/main.js b/vue-options-api-demos/pdf/content-styling/element/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/content-styling/element/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/content-styling/element/main.vue b/vue-options-api-demos/pdf/content-styling/element/main.vue
new file mode 100644
index 00000000..ec6c145e
--- /dev/null
+++ b/vue-options-api-demos/pdf/content-styling/element/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
+ Export PDF
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer felis libero, lobortis ac rutrum quis,
+ varius
+ a velit. Donec lacus erat, cursus sed porta quis, adipiscing et ligula. Duis volutpat, sem pharetra accumsan
+ pharetra, mi ligula cursus felis, ac aliquet leo diam eget risus. Integer facilisis, justo cursus venenatis
+ vehicula, massa nisl tempor sem, in ullamcorper neque mauris in orci.
+
+
+ Ut orci ligula, varius ac consequat in, rhoncus in dolor. Mauris pulvinar molestie accumsan. Vestibulum ante
+ ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean velit ligula, pharetra quis
+ aliquam sed, scelerisque sed sapien. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
+ inceptos himenaeos. Aliquam dui mi, vulputate vitae pulvinar ac, condimentum sed eros.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/pdf/content-styling/element/styles.css b/vue-options-api-demos/pdf/content-styling/element/styles.css
new file mode 100644
index 00000000..65fd3b70
--- /dev/null
+++ b/vue-options-api-demos/pdf/content-styling/element/styles.css
@@ -0,0 +1,3 @@
+kendo-pdf-document p {
+ background: url("data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=");
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/pdf/embedded-image/main.js b/vue-options-api-demos/pdf/embedded-image/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/embedded-image/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/embedded-image/main.vue b/vue-options-api-demos/pdf/embedded-image/main.vue
new file mode 100644
index 00000000..4b9171fb
--- /dev/null
+++ b/vue-options-api-demos/pdf/embedded-image/main.vue
@@ -0,0 +1,39 @@
+
+
+
+
+ Export PDF with default resolution
+
+
+
+ Export PDF with 36 dpi
+
+
+
+
+
+
diff --git a/vue-options-api-demos/pdf/get-started/main.js b/vue-options-api-demos/pdf/get-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/get-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/get-started/main.vue b/vue-options-api-demos/pdf/get-started/main.vue
new file mode 100644
index 00000000..6b93c30b
--- /dev/null
+++ b/vue-options-api-demos/pdf/get-started/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+ Export to PDF with component
+
+
+
+ Export to PDF with method
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/pdf/get-started/products.json b/vue-options-api-demos/pdf/get-started/products.json
new file mode 100644
index 00000000..d3ab4ee8
--- /dev/null
+++ b/vue-options-api-demos/pdf/get-started/products.json
@@ -0,0 +1,155 @@
+[
+ {
+ "ProductID": 1,
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 2,
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+ },
+ {
+ "ProductID": 3,
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 4,
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 5,
+ "ProductName": "Chef Anton's Gumbo Mix",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "36 boxes",
+ "UnitPrice": 21.3500,
+ "UnitsInStock": 0,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 6,
+ "ProductName": "Grandma's Boysenberry Spread",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 8 oz jars",
+ "UnitPrice": 25.0000,
+ "UnitsInStock": 120,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 7,
+ "ProductName": "Uncle Bob's Organic Dried Pears",
+ "SupplierID": 3,
+ "CategoryID": 7,
+ "QuantityPerUnit": "12 - 1 lb pkgs.",
+ "UnitPrice": 30.0000,
+ "UnitsInStock": 15,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 7,
+ "CategoryName": "Produce",
+ "Description": "Dried fruit and bean curd"
+ }
+ },
+ {
+ "ProductID": 8,
+ "ProductName": "Northwoods Cranberry Sauce",
+ "SupplierID": 3,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 12 oz jars",
+ "UnitPrice": 40.0000,
+ "UnitsInStock": 6,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+ },
+ {
+ "ProductID": 9,
+ "ProductName": "Mishi Kobe Niku",
+ "SupplierID": 4,
+ "CategoryID": 6,
+ "QuantityPerUnit": "18 - 500 g pkgs.",
+ "UnitPrice": 97.0000,
+ "UnitsInStock": 29,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": true,
+ "Category": {
+ "CategoryID": 6,
+ "CategoryName": "Meat/Poultry",
+ "Description": "Prepared meats"
+ }
+ }
+]
diff --git a/vue-options-api-demos/pdf/hidden-content/main.js b/vue-options-api-demos/pdf/hidden-content/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/hidden-content/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/hidden-content/main.vue b/vue-options-api-demos/pdf/hidden-content/main.vue
new file mode 100644
index 00000000..9186ba53
--- /dev/null
+++ b/vue-options-api-demos/pdf/hidden-content/main.vue
@@ -0,0 +1,53 @@
+
+
+
+
+ Export PDF
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer felis libero, lobortis ac rutrum quis,
+ varius
+ a velit. Donec lacus erat, cursus sed porta quis, adipiscing et ligula. Duis volutpat, sem pharetra accumsan
+ pharetra, mi ligula cursus felis, ac aliquet leo diam eget risus. Integer facilisis, justo cursus venenatis
+ vehicula, massa nisl tempor sem, in ullamcorper neque mauris in orci.
+
+
+ Ut orci ligula, varius ac consequat in, rhoncus in dolor. Mauris pulvinar molestie accumsan. Vestibulum ante
+ ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean velit ligula, pharetra quis
+ aliquam sed, scelerisque sed sapien. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
+ inceptos himenaeos. Aliquam dui mi, vulputate vitae pulvinar ac, condimentum sed eros.
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/pdf/hyperlinks/main.js b/vue-options-api-demos/pdf/hyperlinks/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/hyperlinks/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/hyperlinks/main.vue b/vue-options-api-demos/pdf/hyperlinks/main.vue
new file mode 100644
index 00000000..f850e3ce
--- /dev/null
+++ b/vue-options-api-demos/pdf/hyperlinks/main.vue
@@ -0,0 +1,29 @@
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.js b/vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.vue b/vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.vue
new file mode 100644
index 00000000..c8194d69
--- /dev/null
+++ b/vue-options-api-demos/pdf/multipage-content/automatic-page-breaking/main.vue
@@ -0,0 +1,71 @@
+
+
+
+
+ Export PDF
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer felis libero, lobortis ac rutrum quis, varius a
+ velit. Donec lacus erat, cursus sed porta quis, adipiscing et ligula. Duis volutpat, sem pharetra accumsan
+ pharetra, mi ligula cursus felis, ac aliquet leo diam eget risus. Integer facilisis, justo cursus venenatis
+ vehicula, massa nisl tempor sem, in ullamcorper neque mauris in orci.
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer felis libero, lobortis ac rutrum quis, varius a
+ velit. Donec lacus erat, cursus sed porta quis, adipiscing et ligula. Duis volutpat, sem pharetra accumsan
+ pharetra, mi ligula cursus felis, ac aliquet leo diam eget risus. Integer facilisis, justo cursus venenatis
+ vehicula, massa nisl tempor sem, in ullamcorper neque mauris in orci.
+
+
+ Ut orci ligula, varius ac consequat in, rhoncus in dolor. Mauris pulvinar molestie accumsan. Vestibulum ante
+ ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean velit ligula, pharetra quis
+ aliquam sed, scelerisque sed sapien. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
+ inceptos himenaeos. Aliquam dui mi, vulputate vitae pulvinar ac, condimentum sed eros.
+ Ut orci ligula, varius ac consequat in, rhoncus in dolor. Mauris pulvinar molestie accumsan. Vestibulum ante
+ ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean velit ligula, pharetra quis
+ aliquam sed, scelerisque sed sapien. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
+ inceptos himenaeos. Aliquam dui mi, vulputate vitae pulvinar ac, condimentum sed eros.
+
+
+ Aliquam at nisl quis est adipiscing bibendum. Nam malesuada eros facilisis arcu vulputate at aliquam nunc
+ tempor. In commodo scelerisque enim, eget sodales lorem condimentum rutrum. Phasellus sem metus, ultricies at
+ commodo in, tristique non est. Morbi vel mauris eget mauris commodo elementum. Nam eget libero lacus, ut
+ sollicitudin ante. Nam odio quam, suscipit a fringilla eget, dignissim nec arcu. Donec tristique arcu ut sapien
+ elementum pellentesque.
+ Aliquam at nisl quis est adipiscing bibendum. Nam malesuada eros facilisis arcu vulputate at aliquam nunc
+ tempor. In commodo scelerisque enim, eget sodales lorem condimentum rutrum. Phasellus sem metus, ultricies at
+ commodo in, tristique non est. Morbi vel mauris eget mauris commodo elementum. Nam eget libero lacus, ut
+ sollicitudin ante. Nam odio quam, suscipit a fringilla eget, dignissim nec arcu. Donec tristique arcu ut sapien
+ elementum pellentesque.
+
+
+ Maecenas vitae eros vel enim molestie cursus. Proin ut lacinia ipsum. Nam at elit arcu, at porttitor ipsum.
+ Praesent id viverra lorem. Nam lacinia elementum fermentum. Nulla facilisi. Nulla bibendum erat sed sem interdum
+ suscipit. Vestibulum eget molestie leo. Aliquam erat volutpat. Ut sed nulla libero. Suspendisse id euismod quam.
+ Aliquam interdum turpis vitae purus consectetur in pulvinar libero accumsan. In id augue dui, ac volutpat ante.
+ Suspendisse purus est, ullamcorper id bibendum sed, placerat id leo.
+ Maecenas vitae eros vel enim molestie cursus. Proin ut lacinia ipsum. Nam at elit arcu, at porttitor ipsum.
+ Praesent id viverra lorem. Nam lacinia elementum fermentum. Nulla facilisi. Nulla bibendum erat sed sem interdum
+ suscipit. Vestibulum eget molestie leo. Aliquam erat volutpat. Ut sed nulla libero. Suspendisse id euismod quam.
+ Aliquam interdum turpis vitae purus consectetur in pulvinar libero accumsan. In id augue dui, ac volutpat ante.
+ Suspendisse purus est, ullamcorper id bibendum sed, placerat id leo.
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.js b/vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.vue b/vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.vue
new file mode 100644
index 00000000..db78c03e
--- /dev/null
+++ b/vue-options-api-demos/pdf/multipage-content/manual-page-breaking/main.vue
@@ -0,0 +1,46 @@
+
+
+
+
+ Export PDF
+
+
+
+
+
Page 1
+
+ Aliquam at nisl quis est adipiscing bibendum. Nam malesuada eros facilisis arcu vulputate at aliquam nunc
+ tempor. In commodo scelerisque enim, eget sodales lorem condimentum rutrum. Phasellus sem metus, ultricies at
+ commodo in, tristique non est. Morbi vel mauris eget mauris commodo elementum. Nam eget libero lacus, ut
+ sollicitudin ante. Nam odio quam, suscipit a fringilla eget, dignissim nec arcu. Donec tristique arcu ut
+ sapien elementum pellentesque.
+
+
+
Page 2
+
+ Aliquam at nisl quis est adipiscing bibendum. Nam malesuada eros facilisis arcu vulputate at aliquam nunc
+ tempor. In commodo scelerisque enim, eget sodales lorem condimentum rutrum. Phasellus sem metus, ultricies at
+ commodo in, tristique non est. Morbi vel mauris eget mauris commodo elementum. Nam eget libero lacus, ut
+ sollicitudin ante. Nam odio quam, suscipit a fringilla eget, dignissim nec arcu. Donec tristique arcu ut
+ sapien elementum pellentesque.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/Content.vue b/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/Content.vue
new file mode 100644
index 00000000..40a12c26
--- /dev/null
+++ b/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/Content.vue
@@ -0,0 +1,56 @@
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer felis libero, lobortis ac rutrum quis, varius a
+ velit. Donec lacus erat, cursus sed porta quis, adipiscing et ligula. Duis volutpat, sem pharetra accumsan
+ pharetra, mi ligula cursus felis, ac aliquet leo diam eget risus. Integer facilisis, justo cursus venenatis
+ vehicula, massa nisl tempor sem, in ullamcorper neque mauris in orci.
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer felis libero, lobortis ac rutrum quis, varius a
+ velit. Donec lacus erat, cursus sed porta quis, adipiscing et ligula. Duis volutpat, sem pharetra accumsan
+ pharetra, mi ligula cursus felis, ac aliquet leo diam eget risus. Integer facilisis, justo cursus venenatis
+ vehicula, massa nisl tempor sem, in ullamcorper neque mauris in orci.
+
+
+ Ut orci ligula, varius ac consequat in, rhoncus in dolor. Mauris pulvinar molestie accumsan. Vestibulum ante ipsum
+ primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean velit ligula, pharetra quis aliquam sed,
+ scelerisque sed sapien. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
+ himenaeos. Aliquam dui mi, vulputate vitae pulvinar ac, condimentum sed eros.
+ Ut orci ligula, varius ac consequat in, rhoncus in dolor. Mauris pulvinar molestie accumsan. Vestibulum ante ipsum
+ primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean velit ligula, pharetra quis aliquam sed,
+ scelerisque sed sapien. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
+ himenaeos. Aliquam dui mi, vulputate vitae pulvinar ac, condimentum sed eros.
+
+
+ Aliquam at nisl quis est adipiscing bibendum. Nam malesuada eros facilisis arcu vulputate at aliquam nunc tempor.
+ In commodo scelerisque enim, eget sodales lorem condimentum rutrum. Phasellus sem metus, ultricies at commodo in,
+ tristique non est. Morbi vel mauris eget mauris commodo elementum. Nam eget libero lacus, ut sollicitudin ante.
+ Nam odio quam, suscipit a fringilla eget, dignissim nec arcu. Donec tristique arcu ut sapien elementum
+ pellentesque.
+ Aliquam at nisl quis est adipiscing bibendum. Nam malesuada eros facilisis arcu vulputate at aliquam nunc tempor.
+ In commodo scelerisque enim, eget sodales lorem condimentum rutrum. Phasellus sem metus, ultricies at commodo in,
+ tristique non est. Morbi vel mauris eget mauris commodo elementum. Nam eget libero lacus, ut sollicitudin ante.
+ Nam odio quam, suscipit a fringilla eget, dignissim nec arcu. Donec tristique arcu ut sapien elementum
+ pellentesque.
+
+
+ Maecenas vitae eros vel enim molestie cursus. Proin ut lacinia ipsum. Nam at elit arcu, at porttitor ipsum.
+ Praesent id viverra lorem. Nam lacinia elementum fermentum. Nulla facilisi. Nulla bibendum erat sed sem interdum
+ suscipit. Vestibulum eget molestie leo. Aliquam erat volutpat. Ut sed nulla libero. Suspendisse id euismod quam.
+ Aliquam interdum turpis vitae purus consectetur in pulvinar libero accumsan. In id augue dui, ac volutpat ante.
+ Suspendisse purus est, ullamcorper id bibendum sed, placerat id leo.
+ Maecenas vitae eros vel enim molestie cursus. Proin ut lacinia ipsum. Nam at elit arcu, at porttitor ipsum.
+ Praesent id viverra lorem. Nam lacinia elementum fermentum. Nulla facilisi. Nulla bibendum erat sed sem interdum
+ suscipit. Vestibulum eget molestie leo. Aliquam erat volutpat. Ut sed nulla libero. Suspendisse id euismod quam.
+ Aliquam interdum turpis vitae purus consectetur in pulvinar libero accumsan. In id augue dui, ac volutpat ante.
+ Suspendisse purus est, ullamcorper id bibendum sed, placerat id leo.
+
+
+
+
diff --git a/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.js b/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.vue b/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.vue
new file mode 100644
index 00000000..a3bb9af6
--- /dev/null
+++ b/vue-options-api-demos/pdf/multipage-content/multi-page-content-keep-together/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
+ Export PDF
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/pdf/multipage-content/page-templates/Content.vue b/vue-options-api-demos/pdf/multipage-content/page-templates/Content.vue
new file mode 100644
index 00000000..0cdbb373
--- /dev/null
+++ b/vue-options-api-demos/pdf/multipage-content/page-templates/Content.vue
@@ -0,0 +1,56 @@
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer felis libero, lobortis ac rutrum quis, varius a
+ velit. Donec lacus erat, cursus sed porta quis, adipiscing et ligula. Duis volutpat, sem pharetra accumsan
+ pharetra, mi ligula cursus felis, ac aliquet leo diam eget risus. Integer facilisis, justo cursus venenatis
+ vehicula, massa nisl tempor sem, in ullamcorper neque mauris in orci.
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer felis libero, lobortis ac rutrum quis, varius a
+ velit. Donec lacus erat, cursus sed porta quis, adipiscing et ligula. Duis volutpat, sem pharetra accumsan
+ pharetra, mi ligula cursus felis, ac aliquet leo diam eget risus. Integer facilisis, justo cursus venenatis
+ vehicula, massa nisl tempor sem, in ullamcorper neque mauris in orci.
+
+
+ Ut orci ligula, varius ac consequat in, rhoncus in dolor. Mauris pulvinar molestie accumsan. Vestibulum ante ipsum
+ primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean velit ligula, pharetra quis aliquam sed,
+ scelerisque sed sapien. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
+ himenaeos. Aliquam dui mi, vulputate vitae pulvinar ac, condimentum sed eros.
+ Ut orci ligula, varius ac consequat in, rhoncus in dolor. Mauris pulvinar molestie accumsan. Vestibulum ante ipsum
+ primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean velit ligula, pharetra quis aliquam sed,
+ scelerisque sed sapien. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
+ himenaeos. Aliquam dui mi, vulputate vitae pulvinar ac, condimentum sed eros.
+
+
+ Aliquam at nisl quis est adipiscing bibendum. Nam malesuada eros facilisis arcu vulputate at aliquam nunc tempor.
+ In commodo scelerisque enim, eget sodales lorem condimentum rutrum. Phasellus sem metus, ultricies at commodo in,
+ tristique non est. Morbi vel mauris eget mauris commodo elementum. Nam eget libero lacus, ut sollicitudin ante.
+ Nam odio quam, suscipit a fringilla eget, dignissim nec arcu. Donec tristique arcu ut sapien elementum
+ pellentesque.
+ Aliquam at nisl quis est adipiscing bibendum. Nam malesuada eros facilisis arcu vulputate at aliquam nunc tempor.
+ In commodo scelerisque enim, eget sodales lorem condimentum rutrum. Phasellus sem metus, ultricies at commodo in,
+ tristique non est. Morbi vel mauris eget mauris commodo elementum. Nam eget libero lacus, ut sollicitudin ante.
+ Nam odio quam, suscipit a fringilla eget, dignissim nec arcu. Donec tristique arcu ut sapien elementum
+ pellentesque.
+
+
+ Maecenas vitae eros vel enim molestie cursus. Proin ut lacinia ipsum. Nam at elit arcu, at porttitor ipsum.
+ Praesent id viverra lorem. Nam lacinia elementum fermentum. Nulla facilisi. Nulla bibendum erat sed sem interdum
+ suscipit. Vestibulum eget molestie leo. Aliquam erat volutpat. Ut sed nulla libero. Suspendisse id euismod quam.
+ Aliquam interdum turpis vitae purus consectetur in pulvinar libero accumsan. In id augue dui, ac volutpat ante.
+ Suspendisse purus est, ullamcorper id bibendum sed, placerat id leo.
+ Maecenas vitae eros vel enim molestie cursus. Proin ut lacinia ipsum. Nam at elit arcu, at porttitor ipsum.
+ Praesent id viverra lorem. Nam lacinia elementum fermentum. Nulla facilisi. Nulla bibendum erat sed sem interdum
+ suscipit. Vestibulum eget molestie leo. Aliquam erat volutpat. Ut sed nulla libero. Suspendisse id euismod quam.
+ Aliquam interdum turpis vitae purus consectetur in pulvinar libero accumsan. In id augue dui, ac volutpat ante.
+ Suspendisse purus est, ullamcorper id bibendum sed, placerat id leo.
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/pdf/multipage-content/page-templates/main.js b/vue-options-api-demos/pdf/multipage-content/page-templates/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/multipage-content/page-templates/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/multipage-content/page-templates/main.vue b/vue-options-api-demos/pdf/multipage-content/page-templates/main.vue
new file mode 100644
index 00000000..2117261a
--- /dev/null
+++ b/vue-options-api-demos/pdf/multipage-content/page-templates/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
+ Export PDF
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/pdf/overview/main.js b/vue-options-api-demos/pdf/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/overview/main.vue b/vue-options-api-demos/pdf/overview/main.vue
new file mode 100644
index 00000000..b8d1089d
--- /dev/null
+++ b/vue-options-api-demos/pdf/overview/main.vue
@@ -0,0 +1,136 @@
+
+
+
+
+ Export with component
+
+
+
+ Export with method
+
+
+
+
+ Select sport activity:
+
+
+
+
+
+
+
+
Weekend personal planning
+
+
+
+
+ Planned sport for the weekend:
+ {{ selectedSport }}
+
+
+
+
+
diff --git a/vue-options-api-demos/pdf/table-headers/main.js b/vue-options-api-demos/pdf/table-headers/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/pdf/table-headers/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/pdf/table-headers/main.vue b/vue-options-api-demos/pdf/table-headers/main.vue
new file mode 100644
index 00000000..d70dd869
--- /dev/null
+++ b/vue-options-api-demos/pdf/table-headers/main.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Repeat headers
+
+
+ Export to PDF with component
+
+
+
+
+
+
+ Product
+ Unit Price
+ Qty
+
+
+
+
+ {{ product.ProductName }}
+ {{ product.UnitPrice }}
+ {{ product.QuantityPerUnit }}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/pdf/table-headers/products.json b/vue-options-api-demos/pdf/table-headers/products.json
new file mode 100644
index 00000000..54a01dab
--- /dev/null
+++ b/vue-options-api-demos/pdf/table-headers/products.json
@@ -0,0 +1,1021 @@
+[{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+},{
+ "ProductName": "Chai",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "10 boxes x 20 bags",
+ "UnitPrice": 18.0000,
+ "UnitsInStock": 39,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 10,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Chang",
+ "SupplierID": 1,
+ "CategoryID": 1,
+ "QuantityPerUnit": "24 - 12 oz bottles",
+ "UnitPrice": 19.0000,
+ "UnitsInStock": 17,
+ "UnitsOnOrder": 40,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 1,
+ "CategoryName": "Beverages",
+ "Description": "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductName": "Aniseed Syrup",
+ "SupplierID": 1,
+ "CategoryID": 2,
+ "QuantityPerUnit": "12 - 550 ml bottles",
+ "UnitPrice": 10.0000,
+ "UnitsInStock": 13,
+ "UnitsOnOrder": 70,
+ "ReorderLevel": 25,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductName": "Chef Anton's Cajun Seasoning",
+ "SupplierID": 2,
+ "CategoryID": 2,
+ "QuantityPerUnit": "48 - 6 oz jars",
+ "UnitPrice": 22.0000,
+ "UnitsInStock": 53,
+ "UnitsOnOrder": 0,
+ "ReorderLevel": 0,
+ "Discontinued": false,
+ "Category": {
+ "CategoryID": 2,
+ "CategoryName": "Condiments",
+ "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/popup/align/absolute/main.js b/vue-options-api-demos/popup/align/absolute/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/popup/align/absolute/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/popup/align/absolute/main.vue b/vue-options-api-demos/popup/align/absolute/main.vue
new file mode 100644
index 00000000..b74097d4
--- /dev/null
+++ b/vue-options-api-demos/popup/align/absolute/main.vue
@@ -0,0 +1,25 @@
+
+
+ Popup content.
+
+
+
diff --git a/vue-options-api-demos/popup/align/absolute/styles.css b/vue-options-api-demos/popup/align/absolute/styles.css
new file mode 100644
index 00000000..a22dd864
--- /dev/null
+++ b/vue-options-api-demos/popup/align/absolute/styles.css
@@ -0,0 +1,6 @@
+.popup-content {
+ padding: 30px;
+ color: #787878;
+ background-color: #fcf7f8;
+ border: 1px solid rgba(0,0,0,.05);
+}
diff --git a/vue-options-api-demos/popup/align/basic/main.js b/vue-options-api-demos/popup/align/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/popup/align/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/popup/align/basic/main.vue b/vue-options-api-demos/popup/align/basic/main.vue
new file mode 100644
index 00000000..f4e33d2f
--- /dev/null
+++ b/vue-options-api-demos/popup/align/basic/main.vue
@@ -0,0 +1,48 @@
+
+
+
+ {{buttonText}}
+
+
+ Popup content.
+
+
+
+
diff --git a/vue-options-api-demos/popup/align/basic/styles.css b/vue-options-api-demos/popup/align/basic/styles.css
new file mode 100644
index 00000000..75c49538
--- /dev/null
+++ b/vue-options-api-demos/popup/align/basic/styles.css
@@ -0,0 +1,6 @@
+.popup-content {
+ padding: 30px;
+ color: #787878;
+ background-color: #fcf7f8;
+ border: 1px solid rgba(0,0,0,.05);
+ }
diff --git a/vue-options-api-demos/popup/align/positioning/main.js b/vue-options-api-demos/popup/align/positioning/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/popup/align/positioning/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/popup/align/positioning/main.vue b/vue-options-api-demos/popup/align/positioning/main.vue
new file mode 100644
index 00000000..ba329f8d
--- /dev/null
+++ b/vue-options-api-demos/popup/align/positioning/main.vue
@@ -0,0 +1,118 @@
+
+
+
+
+
Anchor align point
+
+ Horizontal
+
+
+
+
+ Vertical
+
+
+
+
+
+
Popup align point
+
+ Horizontal
+
+
+
+
+ Vertical
+
+
+
+
+
+
Popup action
+
+
+ {{buttonText}}
+
+
+
+
+ ANCHOR
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/popup/align/positioning/styles.css b/vue-options-api-demos/popup/align/positioning/styles.css
new file mode 100644
index 00000000..49f911de
--- /dev/null
+++ b/vue-options-api-demos/popup/align/positioning/styles.css
@@ -0,0 +1,23 @@
+.content {
+ padding: 30px;
+ color: #ffffff;
+ background-color: #999999;
+ border: 1px solid rgba(0,0,0,.05);
+}
+
+.popup-inner-content {
+ width: 100px;
+ height: 50px;
+ margin: 0;
+ padding: 0;
+}
+
+.content p {
+ margin: 0;
+}
+
+.anchor {
+ display: block;
+ width: 120px;
+ margin: 100px auto;
+}
diff --git a/vue-options-api-demos/popup/animations/main.js b/vue-options-api-demos/popup/animations/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/popup/animations/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/popup/animations/main.vue b/vue-options-api-demos/popup/animations/main.vue
new file mode 100644
index 00000000..5f6b5274
--- /dev/null
+++ b/vue-options-api-demos/popup/animations/main.vue
@@ -0,0 +1,78 @@
+
+
+
+
+ Animate
+
+
+ Animation duration
+
+
+
+ {{ buttonText }}
+
+
+ Popup content.
+
+
+
+
diff --git a/vue-options-api-demos/popup/animations/styles.css b/vue-options-api-demos/popup/animations/styles.css
new file mode 100644
index 00000000..75c49538
--- /dev/null
+++ b/vue-options-api-demos/popup/animations/styles.css
@@ -0,0 +1,6 @@
+.popup-content {
+ padding: 30px;
+ color: #787878;
+ background-color: #fcf7f8;
+ border: 1px solid rgba(0,0,0,.05);
+ }
diff --git a/vue-options-api-demos/popup/basic/main.js b/vue-options-api-demos/popup/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/popup/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/popup/basic/main.vue b/vue-options-api-demos/popup/basic/main.vue
new file mode 100644
index 00000000..9712a92b
--- /dev/null
+++ b/vue-options-api-demos/popup/basic/main.vue
@@ -0,0 +1,48 @@
+
+
+
+ {{buttonText}}
+
+
+ Popup content.
+
+
+
+
diff --git a/vue-options-api-demos/popup/basic/styles.css b/vue-options-api-demos/popup/basic/styles.css
new file mode 100644
index 00000000..5a41f98d
--- /dev/null
+++ b/vue-options-api-demos/popup/basic/styles.css
@@ -0,0 +1,6 @@
+.popup-content {
+ padding: 30px;
+ color: #787878;
+ background-color: #fcf7f8;
+ border: 1px solid rgba(0,0,0,.05);
+}
diff --git a/vue-options-api-demos/popup/hidden/main.js b/vue-options-api-demos/popup/hidden/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/popup/hidden/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/popup/hidden/main.vue b/vue-options-api-demos/popup/hidden/main.vue
new file mode 100644
index 00000000..9712a92b
--- /dev/null
+++ b/vue-options-api-demos/popup/hidden/main.vue
@@ -0,0 +1,48 @@
+
+
+
+ {{buttonText}}
+
+
+ Popup content.
+
+
+
+
diff --git a/vue-options-api-demos/popup/hidden/styles.css b/vue-options-api-demos/popup/hidden/styles.css
new file mode 100644
index 00000000..5a41f98d
--- /dev/null
+++ b/vue-options-api-demos/popup/hidden/styles.css
@@ -0,0 +1,6 @@
+.popup-content {
+ padding: 30px;
+ color: #787878;
+ background-color: #fcf7f8;
+ border: 1px solid rgba(0,0,0,.05);
+}
diff --git a/vue-options-api-demos/popup/styling/main.js b/vue-options-api-demos/popup/styling/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/popup/styling/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/popup/styling/main.vue b/vue-options-api-demos/popup/styling/main.vue
new file mode 100644
index 00000000..2d6b8958
--- /dev/null
+++ b/vue-options-api-demos/popup/styling/main.vue
@@ -0,0 +1,49 @@
+
+
+
+ {{buttonText}}
+
+
+ Popup content.
+
+
+
+
diff --git a/vue-options-api-demos/popup/styling/styles.css b/vue-options-api-demos/popup/styling/styles.css
new file mode 100644
index 00000000..a43fd222
--- /dev/null
+++ b/vue-options-api-demos/popup/styling/styles.css
@@ -0,0 +1,9 @@
+.wrapper {
+ color: #ffffff;
+ background-color: #eeeeee;
+ }
+
+ .inner-wrapper {
+ padding: 20px;
+ background-color: #fcfcfc;
+ }
diff --git a/vue-options-api-demos/popup/viewport/main.js b/vue-options-api-demos/popup/viewport/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/popup/viewport/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/popup/viewport/main.vue b/vue-options-api-demos/popup/viewport/main.vue
new file mode 100644
index 00000000..5197587e
--- /dev/null
+++ b/vue-options-api-demos/popup/viewport/main.vue
@@ -0,0 +1,56 @@
+
+
+
+ {{buttonText}}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/popup/viewport/styles.css b/vue-options-api-demos/popup/viewport/styles.css
new file mode 100644
index 00000000..d1a10bdf
--- /dev/null
+++ b/vue-options-api-demos/popup/viewport/styles.css
@@ -0,0 +1,19 @@
+.popup-content {
+ color: #787878;
+ background-color: #fcf7f8;
+ border: 1px solid rgba(0,0,0,.05);
+ padding: 30px;
+}
+
+.popup-inner-content {
+ width: 100px;
+ height: 50px;
+ margin: 0;
+ padding: 0;
+}
+
+.anchor {
+ position: absolute;
+ top: 150px;
+ left: 50px;
+}
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormContent.vue b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormContent.vue
new file mode 100644
index 00000000..d026470d
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormContent.vue
@@ -0,0 +1,141 @@
+
+
+
+
+ PROFILE COMPLETENESS: {{ completeness }}%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+ Clear
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormDropDownList.vue b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormDropDownList.vue
new file mode 100644
index 00000000..0c08d742
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormDropDownList.vue
@@ -0,0 +1,82 @@
+
+
+
+ {{ label }} {{ value }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormInput.vue b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormInput.vue
new file mode 100644
index 00000000..706d5702
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/FormInput.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{label}}
+
+
+
+
+ {{validationMessage}}
+
+ {{hint}}
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.vue
new file mode 100644
index 00000000..38928a06
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/appearance/main.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.vue
new file mode 100644
index 00000000..d0dc86de
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/dimensions/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/direction/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/direction/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/direction/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/direction/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/direction/main.vue
new file mode 100644
index 00000000..2bed3ecd
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/direction/main.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+ State:
+ {{ isProgressBarReversed ? 'Reversed' : 'Default' }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.vue
new file mode 100644
index 00000000..f2c820f7
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/disabled/main.vue
@@ -0,0 +1,35 @@
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.vue
new file mode 100644
index 00000000..50cec5ba
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/orientation/main.vue
@@ -0,0 +1,41 @@
+
+
+
+
Horizontal ChunkProgressBar
+
+
+
+
+
Vertical ChunkProgressBar
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/overview/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/overview/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/overview/main.vue
new file mode 100644
index 00000000..7eebd7a0
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/overview/main.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.js b/vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.vue b/vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.vue
new file mode 100644
index 00000000..cd98b693
--- /dev/null
+++ b/vue-options-api-demos/progressbars/chunkprogressbar/value_ranges/main.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
Min: {{ min }}
+
Max: {{ max }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/get-started/main.js b/vue-options-api-demos/progressbars/get-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/get-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/get-started/main.vue b/vue-options-api-demos/progressbars/get-started/main.vue
new file mode 100644
index 00000000..4eba7f5d
--- /dev/null
+++ b/vue-options-api-demos/progressbars/get-started/main.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/globalization/main.js b/vue-options-api-demos/progressbars/globalization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/globalization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/globalization/main.vue b/vue-options-api-demos/progressbars/globalization/main.vue
new file mode 100644
index 00000000..eb22fd3d
--- /dev/null
+++ b/vue-options-api-demos/progressbars/globalization/main.vue
@@ -0,0 +1,43 @@
+
+
+
+
ProgressBar
+
Chunk ProgressBar
+
+
+
+
+
+ Value: {{value}}
+
+
+ Chunk count: {{chunks}}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/overview/main.js b/vue-options-api-demos/progressbars/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/overview/main.vue b/vue-options-api-demos/progressbars/overview/main.vue
new file mode 100644
index 00000000..315d3348
--- /dev/null
+++ b/vue-options-api-demos/progressbars/overview/main.vue
@@ -0,0 +1,45 @@
+
+
+
+
ProgressBar
+
+ Chunk ProgressBar
+
+
+
+
+
+
+ Value: {{ value }}
+
+
+ Chunks: {{ chunkCount }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/progressbar/animation-2/main.js b/vue-options-api-demos/progressbars/progressbar/animation-2/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/animation-2/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/progressbar/animation-2/main.vue b/vue-options-api-demos/progressbars/progressbar/animation-2/main.vue
new file mode 100644
index 00000000..faa0e637
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/animation-2/main.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+ {{ animatedValue === 0 ? "Start progress" : "Reset progress" }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/progressbar/animation/main.js b/vue-options-api-demos/progressbars/progressbar/animation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/animation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/progressbar/animation/main.vue b/vue-options-api-demos/progressbars/progressbar/animation/main.vue
new file mode 100644
index 00000000..faa0e637
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/animation/main.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+ {{ animatedValue === 0 ? "Start progress" : "Reset progress" }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/progressbar/appearance/main.js b/vue-options-api-demos/progressbars/progressbar/appearance/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/appearance/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/progressbar/appearance/main.vue b/vue-options-api-demos/progressbars/progressbar/appearance/main.vue
new file mode 100644
index 00000000..517cf31e
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/appearance/main.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+ {{ customText }}
+
+
+
+
+
+ Reset Password
+
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/progressbar/dimensions/main.js b/vue-options-api-demos/progressbars/progressbar/dimensions/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/dimensions/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/progressbar/dimensions/main.vue b/vue-options-api-demos/progressbars/progressbar/dimensions/main.vue
new file mode 100644
index 00000000..26dda03e
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/dimensions/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/progressbar/direction/main.js b/vue-options-api-demos/progressbars/progressbar/direction/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/direction/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/progressbar/direction/main.vue b/vue-options-api-demos/progressbars/progressbar/direction/main.vue
new file mode 100644
index 00000000..63bdc207
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/direction/main.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+ State: {{ direction ? "Reversed" : "Default" }}
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/progressbar/disabled/main.js b/vue-options-api-demos/progressbars/progressbar/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/progressbar/disabled/main.vue b/vue-options-api-demos/progressbars/progressbar/disabled/main.vue
new file mode 100644
index 00000000..90b0522d
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/disabled/main.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/progressbar/label/custom/main.js b/vue-options-api-demos/progressbars/progressbar/label/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/label/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/progressbar/label/custom/main.vue b/vue-options-api-demos/progressbars/progressbar/label/custom/main.vue
new file mode 100644
index 00000000..2f1cd8c9
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/label/custom/main.vue
@@ -0,0 +1,53 @@
+
+
+
+ start
+ stop
+ reset
+
+
+
+
+
+ {{ value }}% Loading
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/progressbar/label/getting-started/main.js b/vue-options-api-demos/progressbars/progressbar/label/getting-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/label/getting-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/progressbar/label/getting-started/main.vue b/vue-options-api-demos/progressbars/progressbar/label/getting-started/main.vue
new file mode 100644
index 00000000..5ba307a0
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/label/getting-started/main.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/progressbar/orientation/main.js b/vue-options-api-demos/progressbars/progressbar/orientation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/orientation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/progressbar/orientation/main.vue b/vue-options-api-demos/progressbars/progressbar/orientation/main.vue
new file mode 100644
index 00000000..225327a0
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/orientation/main.vue
@@ -0,0 +1,23 @@
+
+
+
+
Horizontal ProgressBar
+
+
+
+
+
Vertical ProgressBar
+
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/progressbar/overview/main.js b/vue-options-api-demos/progressbars/progressbar/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/progressbar/overview/main.vue b/vue-options-api-demos/progressbars/progressbar/overview/main.vue
new file mode 100644
index 00000000..468bd93f
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/overview/main.vue
@@ -0,0 +1,49 @@
+
+
+
+ start
+ stop
+ reset
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/progressbars/progressbar/value_ranges/main.js b/vue-options-api-demos/progressbars/progressbar/value_ranges/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/value_ranges/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/progressbars/progressbar/value_ranges/main.vue b/vue-options-api-demos/progressbars/progressbar/value_ranges/main.vue
new file mode 100644
index 00000000..af2a258c
--- /dev/null
+++ b/vue-options-api-demos/progressbars/progressbar/value_ranges/main.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+ Value:{{ " " }}
+
+
+
+
+
+
+
Min: {{ min }}
+
Max: {{ max }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/accessibility/summary/main.js b/vue-options-api-demos/scheduler/accessibility/summary/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/accessibility/summary/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/accessibility/summary/main.vue b/vue-options-api-demos/scheduler/accessibility/summary/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/accessibility/summary/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/events-utc.js b/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.js b/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.vue b/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.vue
new file mode 100644
index 00000000..ecb08a88
--- /dev/null
+++ b/vue-options-api-demos/scheduler/adaptive-slot-height/disabled/main.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/adaptive-slot-height/overview/events-utc.js b/vue-options-api-demos/scheduler/adaptive-slot-height/overview/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/adaptive-slot-height/overview/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.js b/vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.vue b/vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.vue
new file mode 100644
index 00000000..5633c185
--- /dev/null
+++ b/vue-options-api-demos/scheduler/adaptive-slot-height/overview/main.vue
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/auto-item-height/constant/events-utc.js b/vue-options-api-demos/scheduler/auto-item-height/constant/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/auto-item-height/constant/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/auto-item-height/constant/main.js b/vue-options-api-demos/scheduler/auto-item-height/constant/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/auto-item-height/constant/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/auto-item-height/constant/main.vue b/vue-options-api-demos/scheduler/auto-item-height/constant/main.vue
new file mode 100644
index 00000000..ebcc9ea2
--- /dev/null
+++ b/vue-options-api-demos/scheduler/auto-item-height/constant/main.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/auto-item-height/overview/events-utc.js b/vue-options-api-demos/scheduler/auto-item-height/overview/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/auto-item-height/overview/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/auto-item-height/overview/main.js b/vue-options-api-demos/scheduler/auto-item-height/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/auto-item-height/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/auto-item-height/overview/main.vue b/vue-options-api-demos/scheduler/auto-item-height/overview/main.vue
new file mode 100644
index 00000000..0b24ab54
--- /dev/null
+++ b/vue-options-api-demos/scheduler/auto-item-height/overview/main.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/context/main.js b/vue-options-api-demos/scheduler/context/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/context/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/context/main.vue b/vue-options-api-demos/scheduler/context/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/context/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/custom-templates/agenda/task/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/agenda/task/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/agenda/task/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/custom-templates/agenda/task/main.js b/vue-options-api-demos/scheduler/custom-templates/agenda/task/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/agenda/task/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/custom-templates/agenda/task/main.vue b/vue-options-api-demos/scheduler/custom-templates/agenda/task/main.vue
new file mode 100644
index 00000000..b6d8843c
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/agenda/task/main.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/custom-templates/events/color/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/events/color/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/events/color/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/custom-templates/events/color/main.js b/vue-options-api-demos/scheduler/custom-templates/events/color/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/events/color/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/custom-templates/events/color/main.vue b/vue-options-api-demos/scheduler/custom-templates/events/color/main.vue
new file mode 100644
index 00000000..b7b7eb7b
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/events/color/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ {{ props.title }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/custom-templates/events/image/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/events/image/events-utc.js
new file mode 100644
index 00000000..b7cf1630
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/events/image/events-utc.js
@@ -0,0 +1,900 @@
+const baseData = [
+ {
+ TaskID: 4,
+ OwnerID: 2,
+ Title: 'Bowling tournament',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-09T21:00:00.000Z',
+ End: '2013-06-10T00:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 5,
+ OwnerID: 2,
+ Title: 'Take the dog to the vet',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-10T07:00:00.000Z',
+ End: '2013-06-10T08:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 6,
+ OwnerID: 2,
+ Title: 'Call Charlie about the project',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-11T11:30:00.000Z',
+ End: '2013-06-11T13:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 7,
+ OwnerID: 3,
+ Title: 'Meeting with Alex',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-12T11:00:00.000Z',
+ End: '2013-06-12T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 9,
+ OwnerID: 2,
+ Title: "Alex's Birthday",
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-14T02:00:00.000Z',
+ End: '2013-06-14T02:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 12,
+ OwnerID: 2,
+ Title: 'Car Service',
+ RoomID: 1,
+ Description: 'Might come to work later!',
+ StartTimezone: null,
+ Start: '2013-06-24T08:30:00.000Z',
+ End: '2013-06-24T10:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image:
+ 'https://st3.depositphotos.com/1177973/12967/i/450/depositphotos_129673012-stock-photo-cubes-with-words-car-service.jpg',
+ },
+ {
+ TaskID: 14,
+ OwnerID: 3,
+ RoomID: 2,
+ PersonID: 3,
+ Title: 'Replace the printer on the 1st floor',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-24T10:00:00.000Z',
+ End: '2013-06-24T11:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 15,
+ OwnerID: 1,
+ Title: 'Attending HR Conference',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T00:00:00.000Z',
+ End: '2013-06-26T00:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 16,
+ OwnerID: 1,
+ Title: 'Business Lunch with Gregory Watkins',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T12:00:00.000Z',
+ End: '2013-06-25T13:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 17,
+ OwnerID: 1,
+ Title: 'Breakfast with CFO and COO',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T08:30:00.000Z',
+ End: '2013-06-27T09:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 18,
+ OwnerID: 1,
+ Title: 'Job Interview - Mathew Stevens',
+ Description: 'Junior Researcher',
+ StartTimezone: null,
+ Start: '2013-06-27T10:00:00.000Z',
+ End: '2013-06-27T11:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 19,
+ OwnerID: 1,
+ Title: 'Review CVs with Tim',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T11:00:00.000Z',
+ End: '2013-06-27T11:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 20,
+ OwnerID: 1,
+ Title: 'Lunch with Monica',
+ Description: 'Discuss the Employee handbook',
+ StartTimezone: null,
+ Start: '2013-06-27T12:00:00.000Z',
+ End: '2013-06-27T13:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 21,
+ OwnerID: 1,
+ Title: 'Job Interview - John Stewart',
+ Description: 'Accountant',
+ StartTimezone: null,
+ Start: '2013-06-27T14:00:00.000Z',
+ End: '2013-06-27T15:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 22,
+ OwnerID: 1,
+ Title: 'Job Interview - Mary Smith',
+ Description: 'Accountant',
+ StartTimezone: null,
+ Start: '2013-06-27T15:30:00.000Z',
+ End: '2013-06-27T16:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 24,
+ OwnerID: 3,
+ Title: 'Register new Access Cards',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-24T12:00:00.000Z',
+ End: '2013-06-24T12:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 25,
+ OwnerID: 1,
+ Title: 'HR Lecture',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-04T19:00:00.000Z',
+ End: '2013-06-04T21:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: 'FREQ=WEEKLY;BYDAY=TU,TH',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 26,
+ OwnerID: 1,
+ Title: 'Dentist',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-28T08:00:00.000Z',
+ End: '2013-06-28T09:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 27,
+ OwnerID: 1,
+ Title: 'Job Interview - Laura Bailey',
+ Description: 'Helpdesk',
+ StartTimezone: null,
+ Start: '2013-06-28T09:30:00.000Z',
+ End: '2013-06-28T10:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 28,
+ OwnerID: 1,
+ Title: 'Job Interview - Jenny Baxter',
+ Description: 'Helpdesk',
+ StartTimezone: null,
+ Start: '2013-06-28T11:00:00.000Z',
+ End: '2013-06-28T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 31,
+ OwnerID: 1,
+ Title: 'Team building prep tasks',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-28T14:00:00.000Z',
+ End: '2013-06-28T17:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 32,
+ OwnerID: 2,
+ RoomID: 2,
+ Title: 'Job Interview - Bernard Atkins',
+ Description: 'Helpdesk',
+ StartTimezone: null,
+ Start: '2013-06-24T13:30:00.000Z',
+ End: '2013-06-24T14:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 34,
+ OwnerID: 1,
+ Title: 'Review Job Applications',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-24T15:00:00.000Z',
+ End: '2013-06-24T17:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 35,
+ OwnerID: 1,
+ Title: 'Grand Canyon tour',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-23T00:00:00.000Z',
+ End: '2013-06-23T00:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 40,
+ OwnerID: 3,
+ Title: 'Install new laptops in conference rooms',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-24T13:30:00.000Z',
+ End: '2013-06-24T15:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 66,
+ OwnerID: 3,
+ Title: "Bob's Birthday",
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-29T08:00:00.000Z',
+ End: '2013-06-29T06:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 68,
+ OwnerID: 1,
+ RoomID: 2,
+ Title: 'Breakfast with Tom',
+ Description: 'Have to ask him about his holiday plans',
+ StartTimezone: null,
+ Start: '2013-06-24T09:45:00.000Z',
+ End: '2013-06-24T11:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image:
+ 'https://st4.depositphotos.com/13349494/27821/i/450/depositphotos_278217016-stock-photo-top-view-tasty-breakfast-pancakes.jpg',
+ },
+ {
+ TaskID: 69,
+ OwnerID: 2,
+ Title: 'Team planning meeting',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-24T10:00:00.000Z',
+ End: '2013-06-24T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 70,
+ OwnerID: 2,
+ Title: 'Support Phone Call',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-24T16:00:00.000Z',
+ End: '2013-06-24T16:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 71,
+ OwnerID: 2,
+ Title: 'Business breakfast with Caroline',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T09:00:00.000Z',
+ End: '2013-06-25T10:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 72,
+ OwnerID: 2,
+ Title: "Discuss preojects' deadlines",
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T11:00:00.000Z',
+ End: '2013-06-25T11:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 73,
+ OwnerID: 2,
+ Title: 'Support Meeting',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T15:00:00.000Z',
+ End: '2013-06-25T16:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 74,
+ OwnerID: 2,
+ Title: 'Dine with Mathew',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T18:30:00.000Z',
+ End: '2013-06-25T20:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 79,
+ OwnerID: 2,
+ Title: 'Banking',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-26T09:00:00.000Z',
+ End: '2013-06-26T10:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 80,
+ OwnerID: 3,
+ Title: 'Software updates',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T10:00:00.000Z',
+ End: '2013-06-25T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 81,
+ OwnerID: 3,
+ Title: 'UPS maintenance',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T16:30:00.000Z',
+ End: '2013-06-25T18:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 82,
+ OwnerID: 2,
+ Title: 'Support Call',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-26T11:30:00.000Z',
+ End: '2013-06-26T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 83,
+ OwnerID: 3,
+ Title: 'Phone Sync with NY office ',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-26T13:30:00.000Z',
+ End: '2013-06-26T14:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 84,
+ OwnerID: 3,
+ Title: 'Phone Sync with Boston Office',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-26T15:00:00.000Z',
+ End: '2013-06-26T16:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 85,
+ OwnerID: 3,
+ Title: 'Server maintenance',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-26T18:30:00.000Z',
+ End: '2013-06-26T21:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 86,
+ OwnerID: 2,
+ Title: 'Status meeting',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-28T13:30:00.000Z',
+ End: '2013-06-28T15:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 87,
+ OwnerID: 3,
+ Title: 'Helpdesk status meeting',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T10:30:00.000Z',
+ End: '2013-06-27T11:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 88,
+ OwnerID: 2,
+ Title: 'Business Lunch',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T12:00:00.000Z',
+ End: '2013-06-27T13:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 89,
+ OwnerID: 3,
+ Title: 'Employee database update',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T14:00:00.000Z',
+ End: '2013-06-27T15:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 90,
+ OwnerID: 3,
+ Title: 'Website upload',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T07:30:00.000Z',
+ End: '2013-06-27T08:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 91,
+ OwnerID: 2,
+ Title: 'Meeting with marketing guys',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T17:00:00.000Z',
+ End: '2013-06-27T18:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 92,
+ OwnerID: 3,
+ Title: 'Meeting with Internet provider',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-28T10:30:00.000Z',
+ End: '2013-06-28T11:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 93,
+ OwnerID: 3,
+ Title: "Bob's Birthday Party",
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-29T20:00:00.000Z',
+ End: '2013-06-29T23:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 95,
+ OwnerID: 2,
+ Title: 'Dance Practice',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-03T18:30:00.000Z',
+ End: '2013-06-03T20:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: 'FREQ=WEEKLY;BYDAY=MO,WE',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 114,
+ OwnerID: 3,
+ Title: 'Software updates',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-04T09:00:00.000Z',
+ End: '2013-06-04T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: '',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 115,
+ OwnerID: 1,
+ Title: 'Breakfast at Starbucks',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-04T08:00:00.000Z',
+ End: '2013-06-04T09:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: '',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 116,
+ OwnerID: 2,
+ Title: 'Performance review',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-04T14:00:00.000Z',
+ End: '2013-06-04T17:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: '',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 118,
+ OwnerID: 1,
+ Title: 'HR seminar preparation',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-05T10:00:00.000Z',
+ End: '2013-06-05T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: '',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 119,
+ OwnerID: 3,
+ Title: 'Helpdesk weekly meeting',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-05T15:00:00.000Z',
+ End: '2013-06-05T16:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: 'FREQ=WEEKLY;BYDAY=WE',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 120,
+ OwnerID: 3,
+ Title: 'Website upload',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-07T07:00:00.000Z',
+ End: '2013-06-07T08:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: '',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException',
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) =>
+ Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map((dataItem) => ({
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ image: dataItem.image,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID,
+}));
+
+export const sampleDataWithResources = baseData.map((dataItem) => ({
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2),
+}));
+
+export const sampleDataWithCustomSchema = baseData.map((dataItem) => ({
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2),
+}));
diff --git a/vue-options-api-demos/scheduler/custom-templates/events/image/main.js b/vue-options-api-demos/scheduler/custom-templates/events/image/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/events/image/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/custom-templates/events/image/main.vue b/vue-options-api-demos/scheduler/custom-templates/events/image/main.vue
new file mode 100644
index 00000000..a7ffc02f
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/events/image/main.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+ {{ props.title }}
+
+
+
{{
+ props.description
+ }}
+
+
+
+
+ {{ props.title }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/custom-templates/events/resources/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/events/resources/events-utc.js
new file mode 100644
index 00000000..b7cf1630
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/events/resources/events-utc.js
@@ -0,0 +1,900 @@
+const baseData = [
+ {
+ TaskID: 4,
+ OwnerID: 2,
+ Title: 'Bowling tournament',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-09T21:00:00.000Z',
+ End: '2013-06-10T00:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 5,
+ OwnerID: 2,
+ Title: 'Take the dog to the vet',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-10T07:00:00.000Z',
+ End: '2013-06-10T08:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 6,
+ OwnerID: 2,
+ Title: 'Call Charlie about the project',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-11T11:30:00.000Z',
+ End: '2013-06-11T13:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 7,
+ OwnerID: 3,
+ Title: 'Meeting with Alex',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-12T11:00:00.000Z',
+ End: '2013-06-12T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 9,
+ OwnerID: 2,
+ Title: "Alex's Birthday",
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-14T02:00:00.000Z',
+ End: '2013-06-14T02:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 12,
+ OwnerID: 2,
+ Title: 'Car Service',
+ RoomID: 1,
+ Description: 'Might come to work later!',
+ StartTimezone: null,
+ Start: '2013-06-24T08:30:00.000Z',
+ End: '2013-06-24T10:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image:
+ 'https://st3.depositphotos.com/1177973/12967/i/450/depositphotos_129673012-stock-photo-cubes-with-words-car-service.jpg',
+ },
+ {
+ TaskID: 14,
+ OwnerID: 3,
+ RoomID: 2,
+ PersonID: 3,
+ Title: 'Replace the printer on the 1st floor',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-24T10:00:00.000Z',
+ End: '2013-06-24T11:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 15,
+ OwnerID: 1,
+ Title: 'Attending HR Conference',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T00:00:00.000Z',
+ End: '2013-06-26T00:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 16,
+ OwnerID: 1,
+ Title: 'Business Lunch with Gregory Watkins',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T12:00:00.000Z',
+ End: '2013-06-25T13:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 17,
+ OwnerID: 1,
+ Title: 'Breakfast with CFO and COO',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T08:30:00.000Z',
+ End: '2013-06-27T09:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 18,
+ OwnerID: 1,
+ Title: 'Job Interview - Mathew Stevens',
+ Description: 'Junior Researcher',
+ StartTimezone: null,
+ Start: '2013-06-27T10:00:00.000Z',
+ End: '2013-06-27T11:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 19,
+ OwnerID: 1,
+ Title: 'Review CVs with Tim',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T11:00:00.000Z',
+ End: '2013-06-27T11:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 20,
+ OwnerID: 1,
+ Title: 'Lunch with Monica',
+ Description: 'Discuss the Employee handbook',
+ StartTimezone: null,
+ Start: '2013-06-27T12:00:00.000Z',
+ End: '2013-06-27T13:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 21,
+ OwnerID: 1,
+ Title: 'Job Interview - John Stewart',
+ Description: 'Accountant',
+ StartTimezone: null,
+ Start: '2013-06-27T14:00:00.000Z',
+ End: '2013-06-27T15:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 22,
+ OwnerID: 1,
+ Title: 'Job Interview - Mary Smith',
+ Description: 'Accountant',
+ StartTimezone: null,
+ Start: '2013-06-27T15:30:00.000Z',
+ End: '2013-06-27T16:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 24,
+ OwnerID: 3,
+ Title: 'Register new Access Cards',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-24T12:00:00.000Z',
+ End: '2013-06-24T12:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 25,
+ OwnerID: 1,
+ Title: 'HR Lecture',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-04T19:00:00.000Z',
+ End: '2013-06-04T21:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: 'FREQ=WEEKLY;BYDAY=TU,TH',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 26,
+ OwnerID: 1,
+ Title: 'Dentist',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-28T08:00:00.000Z',
+ End: '2013-06-28T09:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 27,
+ OwnerID: 1,
+ Title: 'Job Interview - Laura Bailey',
+ Description: 'Helpdesk',
+ StartTimezone: null,
+ Start: '2013-06-28T09:30:00.000Z',
+ End: '2013-06-28T10:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 28,
+ OwnerID: 1,
+ Title: 'Job Interview - Jenny Baxter',
+ Description: 'Helpdesk',
+ StartTimezone: null,
+ Start: '2013-06-28T11:00:00.000Z',
+ End: '2013-06-28T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 31,
+ OwnerID: 1,
+ Title: 'Team building prep tasks',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-28T14:00:00.000Z',
+ End: '2013-06-28T17:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 32,
+ OwnerID: 2,
+ RoomID: 2,
+ Title: 'Job Interview - Bernard Atkins',
+ Description: 'Helpdesk',
+ StartTimezone: null,
+ Start: '2013-06-24T13:30:00.000Z',
+ End: '2013-06-24T14:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 34,
+ OwnerID: 1,
+ Title: 'Review Job Applications',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-24T15:00:00.000Z',
+ End: '2013-06-24T17:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 35,
+ OwnerID: 1,
+ Title: 'Grand Canyon tour',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-23T00:00:00.000Z',
+ End: '2013-06-23T00:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 40,
+ OwnerID: 3,
+ Title: 'Install new laptops in conference rooms',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-24T13:30:00.000Z',
+ End: '2013-06-24T15:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 66,
+ OwnerID: 3,
+ Title: "Bob's Birthday",
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-29T08:00:00.000Z',
+ End: '2013-06-29T06:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 68,
+ OwnerID: 1,
+ RoomID: 2,
+ Title: 'Breakfast with Tom',
+ Description: 'Have to ask him about his holiday plans',
+ StartTimezone: null,
+ Start: '2013-06-24T09:45:00.000Z',
+ End: '2013-06-24T11:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image:
+ 'https://st4.depositphotos.com/13349494/27821/i/450/depositphotos_278217016-stock-photo-top-view-tasty-breakfast-pancakes.jpg',
+ },
+ {
+ TaskID: 69,
+ OwnerID: 2,
+ Title: 'Team planning meeting',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-24T10:00:00.000Z',
+ End: '2013-06-24T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 70,
+ OwnerID: 2,
+ Title: 'Support Phone Call',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-24T16:00:00.000Z',
+ End: '2013-06-24T16:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 71,
+ OwnerID: 2,
+ Title: 'Business breakfast with Caroline',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T09:00:00.000Z',
+ End: '2013-06-25T10:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 72,
+ OwnerID: 2,
+ Title: "Discuss preojects' deadlines",
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T11:00:00.000Z',
+ End: '2013-06-25T11:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 73,
+ OwnerID: 2,
+ Title: 'Support Meeting',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T15:00:00.000Z',
+ End: '2013-06-25T16:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 74,
+ OwnerID: 2,
+ Title: 'Dine with Mathew',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T18:30:00.000Z',
+ End: '2013-06-25T20:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 79,
+ OwnerID: 2,
+ Title: 'Banking',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-26T09:00:00.000Z',
+ End: '2013-06-26T10:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 80,
+ OwnerID: 3,
+ Title: 'Software updates',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T10:00:00.000Z',
+ End: '2013-06-25T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 81,
+ OwnerID: 3,
+ Title: 'UPS maintenance',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-25T16:30:00.000Z',
+ End: '2013-06-25T18:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 82,
+ OwnerID: 2,
+ Title: 'Support Call',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-26T11:30:00.000Z',
+ End: '2013-06-26T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 83,
+ OwnerID: 3,
+ Title: 'Phone Sync with NY office ',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-26T13:30:00.000Z',
+ End: '2013-06-26T14:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 84,
+ OwnerID: 3,
+ Title: 'Phone Sync with Boston Office',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-26T15:00:00.000Z',
+ End: '2013-06-26T16:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 85,
+ OwnerID: 3,
+ Title: 'Server maintenance',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-26T18:30:00.000Z',
+ End: '2013-06-26T21:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: true,
+ image: null,
+ },
+ {
+ TaskID: 86,
+ OwnerID: 2,
+ Title: 'Status meeting',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-28T13:30:00.000Z',
+ End: '2013-06-28T15:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 87,
+ OwnerID: 3,
+ Title: 'Helpdesk status meeting',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T10:30:00.000Z',
+ End: '2013-06-27T11:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 88,
+ OwnerID: 2,
+ Title: 'Business Lunch',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T12:00:00.000Z',
+ End: '2013-06-27T13:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 89,
+ OwnerID: 3,
+ Title: 'Employee database update',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T14:00:00.000Z',
+ End: '2013-06-27T15:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 90,
+ OwnerID: 3,
+ Title: 'Website upload',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T07:30:00.000Z',
+ End: '2013-06-27T08:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 91,
+ OwnerID: 2,
+ Title: 'Meeting with marketing guys',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-27T17:00:00.000Z',
+ End: '2013-06-27T18:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 92,
+ OwnerID: 3,
+ Title: 'Meeting with Internet provider',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-28T10:30:00.000Z',
+ End: '2013-06-28T11:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 93,
+ OwnerID: 3,
+ Title: "Bob's Birthday Party",
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-29T20:00:00.000Z',
+ End: '2013-06-29T23:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: null,
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 95,
+ OwnerID: 2,
+ Title: 'Dance Practice',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-03T18:30:00.000Z',
+ End: '2013-06-03T20:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: 'FREQ=WEEKLY;BYDAY=MO,WE',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 114,
+ OwnerID: 3,
+ Title: 'Software updates',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-04T09:00:00.000Z',
+ End: '2013-06-04T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: '',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 115,
+ OwnerID: 1,
+ Title: 'Breakfast at Starbucks',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-04T08:00:00.000Z',
+ End: '2013-06-04T09:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: '',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 116,
+ OwnerID: 2,
+ Title: 'Performance review',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-04T14:00:00.000Z',
+ End: '2013-06-04T17:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: '',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 118,
+ OwnerID: 1,
+ Title: 'HR seminar preparation',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-05T10:00:00.000Z',
+ End: '2013-06-05T12:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: '',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 119,
+ OwnerID: 3,
+ Title: 'Helpdesk weekly meeting',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-05T15:00:00.000Z',
+ End: '2013-06-05T16:00:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: 'FREQ=WEEKLY;BYDAY=WE',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+ {
+ TaskID: 120,
+ OwnerID: 3,
+ Title: 'Website upload',
+ Description: '',
+ StartTimezone: null,
+ Start: '2013-06-07T07:00:00.000Z',
+ End: '2013-06-07T08:30:00.000Z',
+ EndTimezone: null,
+ RecurrenceRule: '',
+ RecurrenceID: null,
+ RecurrenceException: null,
+ isAllDay: false,
+ image: null,
+ },
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException',
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) =>
+ Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map((dataItem) => ({
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ image: dataItem.image,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID,
+}));
+
+export const sampleDataWithResources = baseData.map((dataItem) => ({
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2),
+}));
+
+export const sampleDataWithCustomSchema = baseData.map((dataItem) => ({
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2),
+}));
diff --git a/vue-options-api-demos/scheduler/custom-templates/events/resources/main.js b/vue-options-api-demos/scheduler/custom-templates/events/resources/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/events/resources/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/custom-templates/events/resources/main.vue b/vue-options-api-demos/scheduler/custom-templates/events/resources/main.vue
new file mode 100644
index 00000000..c681a67a
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/events/resources/main.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+ {{ props.title }}
+
+ {{ getOwnerResource(props.dataItem.ownerID).text }}
+
+
+
+
{{
+ props.description
+ }}
+
+
+
+
+ {{ props.title }}
+
+ {{ getOwnerResource(props.dataItem.ownerID).text }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/custom-templates/header-footer/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/header-footer/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/header-footer/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/custom-templates/header-footer/main.js b/vue-options-api-demos/scheduler/custom-templates/header-footer/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/header-footer/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/custom-templates/header-footer/main.vue b/vue-options-api-demos/scheduler/custom-templates/header-footer/main.vue
new file mode 100644
index 00000000..823f6f5f
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/header-footer/main.vue
@@ -0,0 +1,145 @@
+
+
+
+
+
+ Show/Hide Header:
+
+
+
+ Show/Hide Footer:
+
+
+
+
+
+
+
+
+
+ Something
+
+
+
+ Before Spacer
+
+ After Spacer
+
+
+
+
+
+
+
+ Custom Footer Template
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/color/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/slots/color/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/slots/color/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/color/main.js b/vue-options-api-demos/scheduler/custom-templates/slots/color/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/slots/color/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/color/main.vue b/vue-options-api-demos/scheduler/custom-templates/slots/color/main.vue
new file mode 100644
index 00000000..9fb2175e
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/slots/color/main.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/month/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/slots/month/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/slots/month/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/month/main.js b/vue-options-api-demos/scheduler/custom-templates/slots/month/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/slots/month/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/month/main.vue b/vue-options-api-demos/scheduler/custom-templates/slots/month/main.vue
new file mode 100644
index 00000000..46c2c7e5
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/slots/month/main.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+ {{ formattedDate(props.start) }}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/time/events-utc.js b/vue-options-api-demos/scheduler/custom-templates/slots/time/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/slots/time/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/time/main.js b/vue-options-api-demos/scheduler/custom-templates/slots/time/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/slots/time/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/custom-templates/slots/time/main.vue b/vue-options-api-demos/scheduler/custom-templates/slots/time/main.vue
new file mode 100644
index 00000000..057824ab
--- /dev/null
+++ b/vue-options-api-demos/scheduler/custom-templates/slots/time/main.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+ {{ formattedDate(props.start) }}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/customization/.DS_Store b/vue-options-api-demos/scheduler/customization/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..f9485af88a1e7a5f87225326bfe713effb697d28
GIT binary patch
literal 6148
zcmeH~F$w}f3`G;&La^D=avBfd4F=H@>;)`D8(l%rdXDZ-CJ2t!BJu;tpJXO1`-+{7
zi0JyZUy1Z0GJ~7S(n4d3ypw}m4M3`}dgXhH(h?7~0-B+w9;*1Wg-e+&OK|2Hj6Nq_|Y
zjDU8VVY9|d#ohY$dRE^>)z$?L_2URHKLJSWDqg_du%B!J&7q|#Dlq;CI0gn1_$q-1
D^rsTX
literal 0
HcmV?d00001
diff --git a/vue-options-api-demos/scheduler/customization/editor/custom-editor/main.js b/vue-options-api-demos/scheduler/customization/editor/custom-editor/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/customization/editor/custom-editor/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/customization/editor/custom-editor/main.vue b/vue-options-api-demos/scheduler/customization/editor/custom-editor/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/customization/editor/custom-editor/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.js b/vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.vue b/vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/customization/editor/default-editor/extending-root/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.js b/vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.vue b/vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/customization/editor/default-editor/replacing-editors/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/customization/form/custom-components/main.js b/vue-options-api-demos/scheduler/customization/form/custom-components/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/customization/form/custom-components/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/customization/form/custom-components/main.vue b/vue-options-api-demos/scheduler/customization/form/custom-components/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/customization/form/custom-components/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/customization/form/default-rendering/main.js b/vue-options-api-demos/scheduler/customization/form/default-rendering/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/customization/form/default-rendering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/customization/form/default-rendering/main.vue b/vue-options-api-demos/scheduler/customization/form/default-rendering/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/customization/form/default-rendering/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/data-binding/data-change/main.js b/vue-options-api-demos/scheduler/data-binding/data-change/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-binding/data-change/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/data-binding/data-change/main.vue b/vue-options-api-demos/scheduler/data-binding/data-change/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-binding/data-change/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/data-binding/data/main.js b/vue-options-api-demos/scheduler/data-binding/data/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-binding/data/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/data-binding/data/main.vue b/vue-options-api-demos/scheduler/data-binding/data/main.vue
new file mode 100644
index 00000000..84bbaf14
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-binding/data/main.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-binding/model-fields/main.js b/vue-options-api-demos/scheduler/data-binding/model-fields/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-binding/model-fields/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/data-binding/model-fields/main.vue b/vue-options-api-demos/scheduler/data-binding/model-fields/main.vue
new file mode 100644
index 00000000..0dce60a6
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-binding/model-fields/main.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/basic/events-utc.js b/vue-options-api-demos/scheduler/data-operations/editing/basic/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/basic/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/basic/main.js b/vue-options-api-demos/scheduler/data-operations/editing/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/basic/main.vue b/vue-options-api-demos/scheduler/data-operations/editing/basic/main.vue
new file mode 100644
index 00000000..4db6cf21
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/basic/main.vue
@@ -0,0 +1,62 @@
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/CustomEditForm.vue b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/CustomEditForm.vue
new file mode 100644
index 00000000..f90dbdf4
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/CustomEditForm.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormDateTimePicker.vue b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormDateTimePicker.vue
new file mode 100644
index 00000000..be5eacb0
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormDateTimePicker.vue
@@ -0,0 +1,78 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormInput.vue b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormInput.vue
new file mode 100644
index 00000000..70d42e2e
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormInput.vue
@@ -0,0 +1,89 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormSwitch.vue b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormSwitch.vue
new file mode 100644
index 00000000..35203db3
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormSwitch.vue
@@ -0,0 +1,102 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormTextArea.vue b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormTextArea.vue
new file mode 100644
index 00000000..014b7e68
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/FormTextArea.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{ label }}
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/events-utc.js b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.js b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.vue b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.vue
new file mode 100644
index 00000000..6f8a1d28
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/custom-form/main.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/customize-default/CustomEditForm.vue b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/CustomEditForm.vue
new file mode 100644
index 00000000..52e99f73
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/CustomEditForm.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormInput.vue b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormInput.vue
new file mode 100644
index 00000000..70d42e2e
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormInput.vue
@@ -0,0 +1,89 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormSwitch.vue b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormSwitch.vue
new file mode 100644
index 00000000..35203db3
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/FormSwitch.vue
@@ -0,0 +1,102 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/customize-default/events-utc.js b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.js b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.vue b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.vue
new file mode 100644
index 00000000..6f8a1d28
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/customize-default/main.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/default-values/events-utc.js b/vue-options-api-demos/scheduler/data-operations/editing/default-values/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/default-values/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/default-values/main.js b/vue-options-api-demos/scheduler/data-operations/editing/default-values/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/default-values/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/default-values/main.vue b/vue-options-api-demos/scheduler/data-operations/editing/default-values/main.vue
new file mode 100644
index 00000000..812cf366
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/default-values/main.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/CustomEditForm.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/CustomEditForm.vue
new file mode 100644
index 00000000..f90dbdf4
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/CustomEditForm.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormDateTimePicker.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormDateTimePicker.vue
new file mode 100644
index 00000000..be5eacb0
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormDateTimePicker.vue
@@ -0,0 +1,78 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormInput.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormInput.vue
new file mode 100644
index 00000000..70d42e2e
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormInput.vue
@@ -0,0 +1,89 @@
+
+
+
+ {{ label }}
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormSwitch.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormSwitch.vue
new file mode 100644
index 00000000..35203db3
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormSwitch.vue
@@ -0,0 +1,102 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+ {{ validationMessage }}
+
+ {{ hint }}
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormTextArea.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormTextArea.vue
new file mode 100644
index 00000000..014b7e68
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/FormTextArea.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{ label }}
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/events-utc.js b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.js b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.vue
new file mode 100644
index 00000000..71070346
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-custom-form/main.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/events-utc.js b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.js b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.vue b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.vue
new file mode 100644
index 00000000..6ed6e9f9
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/editing/validation/using-default-form/main.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/grouping/configuration/data.js b/vue-options-api-demos/scheduler/data-operations/grouping/configuration/data.js
new file mode 100644
index 00000000..22792d6b
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/grouping/configuration/data.js
@@ -0,0 +1,32 @@
+export const defaultDate = new Date("2011-06-09T00:00:00.000Z");
+export const data = [
+ {
+ id: 0,
+ title: 'Room 1, Person 1',
+ start: new Date("2011-06-09T09:00:00.000Z"),
+ end: new Date("2011-06-09T11:00:00.000Z"),
+ roomId: 1,
+ personId: 1
+ }, {
+ id: 1,
+ title: 'Room 1, Person 2',
+ start: new Date("2011-06-09T09:00:00.000Z"),
+ end: new Date("2011-06-09T11:00:00.000Z"),
+ roomId: 1,
+ personId: 2
+ }, {
+ id: 2,
+ title: 'Room 2, Person 1',
+ start: new Date("2011-06-09T09:00:00.000Z"),
+ end: new Date("2011-06-09T11:00:00.000Z"),
+ roomId: 2,
+ personId: 1
+ }, {
+ id: 3,
+ title: 'Room 2, Person 2',
+ start: new Date("2011-06-09T09:00:00.000Z"),
+ end: new Date("2011-06-09T11:00:00.000Z"),
+ roomId: 2,
+ personId: 2
+ }
+];
diff --git a/vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.js b/vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.vue b/vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.vue
new file mode 100644
index 00000000..77f0041a
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/grouping/configuration/main.vue
@@ -0,0 +1,56 @@
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/grouping/multiple/data.js b/vue-options-api-demos/scheduler/data-operations/grouping/multiple/data.js
new file mode 100644
index 00000000..5d0f8184
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/grouping/multiple/data.js
@@ -0,0 +1,18 @@
+export const defaultDate = new Date("2011-06-09T00:00:00.000Z");
+export const data = [
+ {
+ id: 0,
+ title: 'Team meeting',
+ start: new Date("2011-06-09T09:00:00.000Z"),
+ end: new Date("2011-06-09T11:00:00.000Z"),
+ roomId: 1,
+ personIds: [ 1, 2 ]
+ }, {
+ id: 1,
+ title: 'Peter Acceleration Program',
+ start: new Date("2011-06-09T11:30:00.000Z"),
+ end: new Date("2011-06-09T13:00:00.000Z"),
+ roomId: 2,
+ personIds: [ 1 ]
+ }
+];
diff --git a/vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.js b/vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.vue b/vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.vue
new file mode 100644
index 00000000..54417b9b
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/grouping/multiple/main.vue
@@ -0,0 +1,59 @@
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/resources/multiple/events-utc.js b/vue-options-api-demos/scheduler/data-operations/resources/multiple/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/resources/multiple/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/data-operations/resources/multiple/main.js b/vue-options-api-demos/scheduler/data-operations/resources/multiple/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/resources/multiple/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/data-operations/resources/multiple/main.vue b/vue-options-api-demos/scheduler/data-operations/resources/multiple/main.vue
new file mode 100644
index 00000000..da03ca8b
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/resources/multiple/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/data-operations/resources/visual/events-utc.js b/vue-options-api-demos/scheduler/data-operations/resources/visual/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/resources/visual/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/data-operations/resources/visual/main.js b/vue-options-api-demos/scheduler/data-operations/resources/visual/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/resources/visual/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/data-operations/resources/visual/main.vue b/vue-options-api-demos/scheduler/data-operations/resources/visual/main.vue
new file mode 100644
index 00000000..07194cbd
--- /dev/null
+++ b/vue-options-api-demos/scheduler/data-operations/resources/visual/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/date-selection/controlled/main.js b/vue-options-api-demos/scheduler/date-selection/controlled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/date-selection/controlled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/date-selection/controlled/main.vue b/vue-options-api-demos/scheduler/date-selection/controlled/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/date-selection/controlled/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/date-selection/uncontrolled/main.js b/vue-options-api-demos/scheduler/date-selection/uncontrolled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/date-selection/uncontrolled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/date-selection/uncontrolled/main.vue b/vue-options-api-demos/scheduler/date-selection/uncontrolled/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/date-selection/uncontrolled/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/globalization/overview/es.json b/vue-options-api-demos/scheduler/globalization/overview/es.json
new file mode 100644
index 00000000..83769a7d
--- /dev/null
+++ b/vue-options-api-demos/scheduler/globalization/overview/es.json
@@ -0,0 +1,19 @@
+{
+ "scheduler": {
+ "today": "Hoy",
+ "allDay": "todo el dia",
+ "showWorkDay": "Mostrar horas laborables",
+ "showFullDay": "Mostrar día completo",
+ "dayViewTitle": "Día",
+ "weekViewTitle": "Semana",
+ "monthViewTitle": "Mes",
+ "editorValidationRequired": "Field is required.",
+ "editorValidationStart": "Start time must be be before End time.",
+ "editorValidationEnd": "End time must be after Start time.",
+ "workWeekViewTitle": "Semana laboral",
+ "agendaViewTitle": "Agenda",
+ "previousTitle": "Previous",
+ "nextTitle": "Next"
+ }
+ }
+
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/globalization/overview/events-utc.js b/vue-options-api-demos/scheduler/globalization/overview/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/globalization/overview/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/globalization/overview/main.js b/vue-options-api-demos/scheduler/globalization/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/globalization/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/globalization/overview/main.vue b/vue-options-api-demos/scheduler/globalization/overview/main.vue
new file mode 100644
index 00000000..bd747f54
--- /dev/null
+++ b/vue-options-api-demos/scheduler/globalization/overview/main.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/globalization/rtl/events-utc.js b/vue-options-api-demos/scheduler/globalization/rtl/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/globalization/rtl/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/globalization/rtl/main.js b/vue-options-api-demos/scheduler/globalization/rtl/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/globalization/rtl/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/globalization/rtl/main.vue b/vue-options-api-demos/scheduler/globalization/rtl/main.vue
new file mode 100644
index 00000000..47dd3f35
--- /dev/null
+++ b/vue-options-api-demos/scheduler/globalization/rtl/main.vue
@@ -0,0 +1,32 @@
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/header-footer/customization/main.js b/vue-options-api-demos/scheduler/header-footer/customization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/header-footer/customization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/header-footer/customization/main.vue b/vue-options-api-demos/scheduler/header-footer/customization/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/header-footer/customization/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/items/context/action-binding/main.js b/vue-options-api-demos/scheduler/items/context/action-binding/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/context/action-binding/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/items/context/action-binding/main.vue b/vue-options-api-demos/scheduler/items/context/action-binding/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/context/action-binding/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.js b/vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.vue b/vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/edit-item/controlled-state/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/items/edit-item/extending/main.js b/vue-options-api-demos/scheduler/items/edit-item/extending/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/edit-item/extending/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/items/edit-item/extending/main.vue b/vue-options-api-demos/scheduler/items/edit-item/extending/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/edit-item/extending/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/items/item/callbacks/main.js b/vue-options-api-demos/scheduler/items/item/callbacks/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/item/callbacks/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/items/item/callbacks/main.vue b/vue-options-api-demos/scheduler/items/item/callbacks/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/item/callbacks/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/items/item/children/main.js b/vue-options-api-demos/scheduler/items/item/children/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/item/children/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/items/item/children/main.vue b/vue-options-api-demos/scheduler/items/item/children/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/item/children/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/items/item/style/main.js b/vue-options-api-demos/scheduler/items/item/style/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/item/style/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/items/item/style/main.vue b/vue-options-api-demos/scheduler/items/item/style/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/item/style/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.js b/vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.vue b/vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/multiple-selection/custom-behavior/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.js b/vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.vue b/vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/multiple-selection/custom-trigger/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.js b/vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.vue b/vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/multiple-selection/default-behavior/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/items/overview/events-utc.js b/vue-options-api-demos/scheduler/items/overview/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/overview/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/items/overview/main.js b/vue-options-api-demos/scheduler/items/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/items/overview/main.vue b/vue-options-api-demos/scheduler/items/overview/main.vue
new file mode 100644
index 00000000..d74b554a
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/overview/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ {{ props.title }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/items/view-item/extending/main.js b/vue-options-api-demos/scheduler/items/view-item/extending/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/view-item/extending/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/items/view-item/extending/main.vue b/vue-options-api-demos/scheduler/items/view-item/extending/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/items/view-item/extending/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/keyboard-navigation/basic/events-utc.js b/vue-options-api-demos/scheduler/keyboard-navigation/basic/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/keyboard-navigation/basic/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/keyboard-navigation/basic/main.js b/vue-options-api-demos/scheduler/keyboard-navigation/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/keyboard-navigation/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/keyboard-navigation/basic/main.vue b/vue-options-api-demos/scheduler/keyboard-navigation/basic/main.vue
new file mode 100644
index 00000000..0cde56e0
--- /dev/null
+++ b/vue-options-api-demos/scheduler/keyboard-navigation/basic/main.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/overview/basic/events-utc.js b/vue-options-api-demos/scheduler/overview/basic/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/overview/basic/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/overview/basic/main.js b/vue-options-api-demos/scheduler/overview/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/overview/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/overview/basic/main.vue b/vue-options-api-demos/scheduler/overview/basic/main.vue
new file mode 100644
index 00000000..ee8ce98c
--- /dev/null
+++ b/vue-options-api-demos/scheduler/overview/basic/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/overview/demo/es.json b/vue-options-api-demos/scheduler/overview/demo/es.json
new file mode 100644
index 00000000..c4c120d6
--- /dev/null
+++ b/vue-options-api-demos/scheduler/overview/demo/es.json
@@ -0,0 +1,13 @@
+{
+ "scheduler": {
+ "today": "Hoy",
+ "allDay": "todo el dia",
+ "showWorkDay": "Mostrar horas laborables",
+ "showFullDay": "Mostrar día completo",
+ "agendaViewTitle": "Agenda",
+ "dayViewTitle": "Día",
+ "weekViewTitle": "Semana",
+ "workWeekViewTitle": "Semana laboral",
+ "monthViewTitle": "Mes"
+ }
+}
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/overview/demo/events-utc.js b/vue-options-api-demos/scheduler/overview/demo/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/overview/demo/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/overview/demo/main.js b/vue-options-api-demos/scheduler/overview/demo/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/overview/demo/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/overview/demo/main.vue b/vue-options-api-demos/scheduler/overview/demo/main.vue
new file mode 100644
index 00000000..291a8727
--- /dev/null
+++ b/vue-options-api-demos/scheduler/overview/demo/main.vue
@@ -0,0 +1,126 @@
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/recurring/overview/id/main.js b/vue-options-api-demos/scheduler/recurring/overview/id/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/recurring/overview/id/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/recurring/overview/id/main.vue b/vue-options-api-demos/scheduler/recurring/overview/id/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/recurring/overview/id/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/recurring/overview/id/server-data.js b/vue-options-api-demos/scheduler/recurring/overview/id/server-data.js
new file mode 100644
index 00000000..0379f9c0
--- /dev/null
+++ b/vue-options-api-demos/scheduler/recurring/overview/id/server-data.js
@@ -0,0 +1,51 @@
+export const serverData = [
+ // The original event, which will be used for editing
+ {
+ id: 24,
+ title: 'Breakfast with Tom',
+ start: new Date("2019-09-02T08:30:00.000Z"),
+ end: new Date("2019-09-02T09:00:00.000Z"),
+ recurrenceRule: "FREQ=DAILY"
+ },
+ // The multiple occurrences, relating to the original event trough the `recurrenceId` field.
+ {
+ id: 1,
+ title: 'Breakfast with Tom',
+ start: new Date("2019-09-02T08:30:00.000Z"),
+ end: new Date("2019-09-02T09:00:00.000Z"),
+ recurrenceId: 24,
+ recurrenceRule: "FREQ=DAILY"
+ },
+ {
+ id: 2,
+ title: 'Breakfast with Tom',
+ start: new Date("2019-09-03T08:30:00.000Z"),
+ end: new Date("2019-09-03T09:00:00.000Z"),
+ recurrenceId: 24,
+ recurrenceRule: "FREQ=DAILY"
+ },
+ {
+ id: 3,
+ title: 'Breakfast with Tom',
+ start: new Date("2019-09-04T08:30:00.000Z"),
+ end: new Date("2019-09-04T09:00:00.000Z"),
+ recurrenceId: 24,
+ recurrenceRule: "FREQ=DAILY"
+ },
+ {
+ id: 4,
+ title: 'Breakfast with Tom',
+ start: new Date("2019-09-05T08:30:00.000Z"),
+ end: new Date("2019-09-05T09:00:00.000Z"),
+ recurrenceId: 24,
+ recurrenceRule: "FREQ=DAILY"
+ },
+ {
+ id: 5,
+ title: 'Breakfast with Tom',
+ start: new Date("2019-09-06T08:30:00.000Z"),
+ end: new Date("2019-09-06T09:00:00.000Z"),
+ recurrenceId: 24,
+ recurrenceRule: "FREQ=DAILY"
+ }
+];
diff --git a/vue-options-api-demos/scheduler/recurring/overview/overview/data.js b/vue-options-api-demos/scheduler/recurring/overview/overview/data.js
new file mode 100644
index 00000000..e9907db3
--- /dev/null
+++ b/vue-options-api-demos/scheduler/recurring/overview/overview/data.js
@@ -0,0 +1,35 @@
+export const displayDate = new Date('2019-09-04T08:00:00.000Z')
+
+export const data = [
+ {
+ id: 0,
+ title: 'Breakfast at home',
+ start: new Date("2019-09-02T07:30:00.000Z"),
+ end: new Date("2019-09-02T08:30:00.000Z"),
+ recurrenceRule: "FREQ=DAILY;BYDAY=TU,TH",
+ recurrenceExceptions: [new Date("2019-09-25T07:30:00.000Z"),new Date("2019-09-26T07:30:00.000Z")]
+ },
+ {
+ id: 1,
+ title: 'Breakfast at the office',
+ start: new Date("2019-09-02T08:30:00.000Z"),
+ end: new Date("2019-09-02T09:00:00.000Z"),
+ recurrenceRule: "FREQ=DAILY;BYDAY=MO,WE,FR",
+ recurrenceExceptions: [new Date("2019-09-25T08:30:00.000Z"),new Date("2019-09-26T08:30:00.000Z")]
+ },
+ {
+ id: 2,
+ title: 'Team Lunch',
+ start: new Date("2019-09-02T12:00:00.000Z"),
+ end: new Date("2019-09-02T13:00:00.000Z"),
+ recurrenceRule: "FREQ=WEEKLY;BYDAY=WE",
+ recurrenceExceptions: [new Date("2019-09-25T12:00:00.000Z"),new Date("2019-09-26T12:00:00.000Z")]
+ },
+ {
+ id: 3,
+ title: 'Vacation',
+ start: new Date("2019-09-25T12:00:00.000Z"),
+ end: new Date("2019-09-26T12:00:00.000Z"),
+ isAllDay: true
+ }
+]
diff --git a/vue-options-api-demos/scheduler/recurring/overview/overview/main.js b/vue-options-api-demos/scheduler/recurring/overview/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/recurring/overview/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/recurring/overview/overview/main.vue b/vue-options-api-demos/scheduler/recurring/overview/overview/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/recurring/overview/overview/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/shared/events-utc.js b/vue-options-api-demos/scheduler/shared/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/shared/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/slots/context/action-binding/main.js b/vue-options-api-demos/scheduler/slots/context/action-binding/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/slots/context/action-binding/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/slots/context/action-binding/main.vue b/vue-options-api-demos/scheduler/slots/context/action-binding/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/slots/context/action-binding/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.js b/vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.vue b/vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/slots/edit-slot/controlled-state/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/slots/overview/main.js b/vue-options-api-demos/scheduler/slots/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/slots/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/slots/overview/main.vue b/vue-options-api-demos/scheduler/slots/overview/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/slots/overview/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/slots/slot/style/main.js b/vue-options-api-demos/scheduler/slots/slot/style/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/slots/slot/style/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/slots/slot/style/main.vue b/vue-options-api-demos/scheduler/slots/slot/style/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/slots/slot/style/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/slots/view-slot/extending/main.js b/vue-options-api-demos/scheduler/slots/view-slot/extending/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/slots/view-slot/extending/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/slots/view-slot/extending/main.vue b/vue-options-api-demos/scheduler/slots/view-slot/extending/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/slots/view-slot/extending/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/tasks/overview/main.js b/vue-options-api-demos/scheduler/tasks/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/tasks/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/tasks/overview/main.vue b/vue-options-api-demos/scheduler/tasks/overview/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/tasks/overview/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/timezones/default/main.js b/vue-options-api-demos/scheduler/timezones/default/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/timezones/default/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/timezones/default/main.vue b/vue-options-api-demos/scheduler/timezones/default/main.vue
new file mode 100644
index 00000000..6776c910
--- /dev/null
+++ b/vue-options-api-demos/scheduler/timezones/default/main.vue
@@ -0,0 +1,34 @@
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/timezones/fixed/main.js b/vue-options-api-demos/scheduler/timezones/fixed/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/timezones/fixed/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/timezones/fixed/main.vue b/vue-options-api-demos/scheduler/timezones/fixed/main.vue
new file mode 100644
index 00000000..696f1608
--- /dev/null
+++ b/vue-options-api-demos/scheduler/timezones/fixed/main.vue
@@ -0,0 +1,34 @@
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/agenda/configuration/events-utc.js b/vue-options-api-demos/scheduler/views/agenda/configuration/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/agenda/configuration/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/agenda/configuration/main.js b/vue-options-api-demos/scheduler/views/agenda/configuration/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/agenda/configuration/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/agenda/configuration/main.vue b/vue-options-api-demos/scheduler/views/agenda/configuration/main.vue
new file mode 100644
index 00000000..37a794d8
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/agenda/configuration/main.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/agenda/grouping/events-utc.js b/vue-options-api-demos/scheduler/views/agenda/grouping/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/agenda/grouping/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/agenda/grouping/main.js b/vue-options-api-demos/scheduler/views/agenda/grouping/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/agenda/grouping/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/agenda/grouping/main.vue b/vue-options-api-demos/scheduler/views/agenda/grouping/main.vue
new file mode 100644
index 00000000..677f332e
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/agenda/grouping/main.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/controlled-state/events-utc.js b/vue-options-api-demos/scheduler/views/controlled-state/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/controlled-state/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/controlled-state/main.js b/vue-options-api-demos/scheduler/views/controlled-state/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/controlled-state/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/controlled-state/main.vue b/vue-options-api-demos/scheduler/views/controlled-state/main.vue
new file mode 100644
index 00000000..30025fc4
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/controlled-state/main.vue
@@ -0,0 +1,56 @@
+
+
+ Select Scheduler view:
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/day/configuration/events-utc.js b/vue-options-api-demos/scheduler/views/day/configuration/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/day/configuration/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/day/configuration/main.js b/vue-options-api-demos/scheduler/views/day/configuration/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/day/configuration/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/day/configuration/main.vue b/vue-options-api-demos/scheduler/views/day/configuration/main.vue
new file mode 100644
index 00000000..2ecad635
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/day/configuration/main.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/day/current-time/main.js b/vue-options-api-demos/scheduler/views/day/current-time/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/day/current-time/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/day/current-time/main.vue b/vue-options-api-demos/scheduler/views/day/current-time/main.vue
new file mode 100644
index 00000000..fd50dd1b
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/day/current-time/main.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/day/grouping-vertical/events-utc.js b/vue-options-api-demos/scheduler/views/day/grouping-vertical/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/day/grouping-vertical/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/day/grouping-vertical/main.js b/vue-options-api-demos/scheduler/views/day/grouping-vertical/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/day/grouping-vertical/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/day/grouping-vertical/main.vue b/vue-options-api-demos/scheduler/views/day/grouping-vertical/main.vue
new file mode 100644
index 00000000..d6094c35
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/day/grouping-vertical/main.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/day/grouping/events-utc.js b/vue-options-api-demos/scheduler/views/day/grouping/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/day/grouping/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/day/grouping/main.js b/vue-options-api-demos/scheduler/views/day/grouping/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/day/grouping/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/day/grouping/main.vue b/vue-options-api-demos/scheduler/views/day/grouping/main.vue
new file mode 100644
index 00000000..678b94ef
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/day/grouping/main.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/default-view/events-utc.js b/vue-options-api-demos/scheduler/views/default-view/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/default-view/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/default-view/main.js b/vue-options-api-demos/scheduler/views/default-view/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/default-view/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/default-view/main.vue b/vue-options-api-demos/scheduler/views/default-view/main.vue
new file mode 100644
index 00000000..71462177
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/default-view/main.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/getting-started/events-utc.js b/vue-options-api-demos/scheduler/views/getting-started/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/getting-started/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/getting-started/main.js b/vue-options-api-demos/scheduler/views/getting-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/getting-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/getting-started/main.vue b/vue-options-api-demos/scheduler/views/getting-started/main.vue
new file mode 100644
index 00000000..4c86320b
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/getting-started/main.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/month/configuration/events-utc.js b/vue-options-api-demos/scheduler/views/month/configuration/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/month/configuration/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/month/configuration/main.js b/vue-options-api-demos/scheduler/views/month/configuration/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/month/configuration/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/month/configuration/main.vue b/vue-options-api-demos/scheduler/views/month/configuration/main.vue
new file mode 100644
index 00000000..c57b53a1
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/month/configuration/main.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/month/grouping-vertical/events-utc.js b/vue-options-api-demos/scheduler/views/month/grouping-vertical/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/month/grouping-vertical/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/month/grouping-vertical/main.js b/vue-options-api-demos/scheduler/views/month/grouping-vertical/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/month/grouping-vertical/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/month/grouping-vertical/main.vue b/vue-options-api-demos/scheduler/views/month/grouping-vertical/main.vue
new file mode 100644
index 00000000..c79c3781
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/month/grouping-vertical/main.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/month/grouping/events-utc.js b/vue-options-api-demos/scheduler/views/month/grouping/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/month/grouping/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/month/grouping/main.js b/vue-options-api-demos/scheduler/views/month/grouping/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/month/grouping/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/month/grouping/main.vue b/vue-options-api-demos/scheduler/views/month/grouping/main.vue
new file mode 100644
index 00000000..4a933c5f
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/month/grouping/main.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/timeline/configuration/events-utc.js b/vue-options-api-demos/scheduler/views/timeline/configuration/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/timeline/configuration/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/timeline/configuration/main.js b/vue-options-api-demos/scheduler/views/timeline/configuration/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/timeline/configuration/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/timeline/configuration/main.vue b/vue-options-api-demos/scheduler/views/timeline/configuration/main.vue
new file mode 100644
index 00000000..3615debb
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/timeline/configuration/main.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/timeline/current-time/main.js b/vue-options-api-demos/scheduler/views/timeline/current-time/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/timeline/current-time/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/timeline/current-time/main.vue b/vue-options-api-demos/scheduler/views/timeline/current-time/main.vue
new file mode 100644
index 00000000..3fbcbc92
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/timeline/current-time/main.vue
@@ -0,0 +1,9 @@
+
+ Scheudler demo
+
+
diff --git a/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/events-utc.js b/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.js b/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.vue b/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.vue
new file mode 100644
index 00000000..8d86a55d
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/timeline/grouping-vertical/main.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/timeline/grouping/events-utc.js b/vue-options-api-demos/scheduler/views/timeline/grouping/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/timeline/grouping/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/timeline/grouping/main.js b/vue-options-api-demos/scheduler/views/timeline/grouping/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/timeline/grouping/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/timeline/grouping/main.vue b/vue-options-api-demos/scheduler/views/timeline/grouping/main.vue
new file mode 100644
index 00000000..dcb3756a
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/timeline/grouping/main.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/week/configuration/events-utc.js b/vue-options-api-demos/scheduler/views/week/configuration/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/week/configuration/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/week/configuration/main.js b/vue-options-api-demos/scheduler/views/week/configuration/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/week/configuration/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/week/configuration/main.vue b/vue-options-api-demos/scheduler/views/week/configuration/main.vue
new file mode 100644
index 00000000..7eaadff3
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/week/configuration/main.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/week/grouping-vertical/events-utc.js b/vue-options-api-demos/scheduler/views/week/grouping-vertical/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/week/grouping-vertical/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/week/grouping-vertical/main.js b/vue-options-api-demos/scheduler/views/week/grouping-vertical/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/week/grouping-vertical/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/week/grouping-vertical/main.vue b/vue-options-api-demos/scheduler/views/week/grouping-vertical/main.vue
new file mode 100644
index 00000000..93bf2ca1
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/week/grouping-vertical/main.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scheduler/views/week/grouping/events-utc.js b/vue-options-api-demos/scheduler/views/week/grouping/events-utc.js
new file mode 100644
index 00000000..f2cdf116
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/week/grouping/events-utc.js
@@ -0,0 +1,847 @@
+const baseData = [
+ {
+ "TaskID": 4,
+ "OwnerID": 2,
+ "Title": "Bowling tournament",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-09T21:00:00.000Z",
+ "End": "2013-06-10T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 5,
+ "OwnerID": 2,
+ "Title": "Take the dog to the vet",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-10T07:00:00.000Z",
+ "End": "2013-06-10T08:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 6,
+ "OwnerID": 2,
+ "Title": "Call Charlie about the project",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-11T11:30:00.000Z",
+ "End": "2013-06-11T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 7,
+ "OwnerID": 3,
+ "Title": "Meeting with Alex",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-12T11:00:00.000Z",
+ "End": "2013-06-12T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 9,
+ "OwnerID": 2,
+ "Title": "Alex's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-14T02:00:00.000Z",
+ "End": "2013-06-14T02:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 12,
+ "OwnerID": 2,
+ "Title": "Car Service",
+ "RoomID": 1,
+ "Description": "Might come to work later!",
+ "StartTimezone": null,
+ "Start": "2013-06-24T08:30:00.000Z",
+ "End": "2013-06-24T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 14,
+ "OwnerID": 3,
+ "RoomID": 2,
+ "PersonID": 3,
+ "Title": "Replace the printer on the 1st floor",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 15,
+ "OwnerID": 1,
+ "Title": "Attending HR Conference",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T00:00:00.000Z",
+ "End": "2013-06-26T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 16,
+ "OwnerID": 1,
+ "Title": "Business Lunch with Gregory Watkins",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T12:00:00.000Z",
+ "End": "2013-06-25T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 17,
+ "OwnerID": 1,
+ "Title": "Breakfast with CFO and COO",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T08:30:00.000Z",
+ "End": "2013-06-27T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 18,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mathew Stevens",
+ "Description": "Junior Researcher",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:00:00.000Z",
+ "End": "2013-06-27T11:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 19,
+ "OwnerID": 1,
+ "Title": "Review CVs with Tim",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T11:00:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 20,
+ "OwnerID": 1,
+ "Title": "Lunch with Monica",
+ "Description": "Discuss the Employee handbook",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 21,
+ "OwnerID": 1,
+ "Title": "Job Interview - John Stewart",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 22,
+ "OwnerID": 1,
+ "Title": "Job Interview - Mary Smith",
+ "Description": "Accountant",
+ "StartTimezone": null,
+ "Start": "2013-06-27T15:30:00.000Z",
+ "End": "2013-06-27T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 24,
+ "OwnerID": 3,
+ "Title": "Register new Access Cards",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T12:00:00.000Z",
+ "End": "2013-06-24T12:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 25,
+ "OwnerID": 1,
+ "Title": "HR Lecture",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T19:00:00.000Z",
+ "End": "2013-06-04T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 26,
+ "OwnerID": 1,
+ "Title": "Dentist",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T08:00:00.000Z",
+ "End": "2013-06-28T09:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 27,
+ "OwnerID": 1,
+ "Title": "Job Interview - Laura Bailey",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T09:30:00.000Z",
+ "End": "2013-06-28T10:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 28,
+ "OwnerID": 1,
+ "Title": "Job Interview - Jenny Baxter",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-28T11:00:00.000Z",
+ "End": "2013-06-28T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 31,
+ "OwnerID": 1,
+ "Title": "Team building prep tasks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T14:00:00.000Z",
+ "End": "2013-06-28T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 32,
+ "OwnerID": 2,
+ "RoomID": 2,
+ "Title": "Job Interview - Bernard Atkins",
+ "Description": "Helpdesk",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 34,
+ "OwnerID": 1,
+ "Title": "Review Job Applications",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T15:00:00.000Z",
+ "End": "2013-06-24T17:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 35,
+ "OwnerID": 1,
+ "Title": "Grand Canyon tour",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-23T00:00:00.000Z",
+ "End": "2013-06-23T00:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 40,
+ "OwnerID": 3,
+ "Title": "Install new laptops in conference rooms",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T13:30:00.000Z",
+ "End": "2013-06-24T15:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 66,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T08:00:00.000Z",
+ "End": "2013-06-29T06:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 68,
+ "OwnerID": 1,
+ "RoomID": 2,
+ "Title": "Breakfast with Tom",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T09:45:00.000Z",
+ "End": "2013-06-24T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 69,
+ "OwnerID": 2,
+ "Title": "Team planning meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T10:00:00.000Z",
+ "End": "2013-06-24T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 70,
+ "OwnerID": 2,
+ "Title": "Support Phone Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-24T16:00:00.000Z",
+ "End": "2013-06-24T16:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 71,
+ "OwnerID": 2,
+ "Title": "Business breakfast with Caroline",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T09:00:00.000Z",
+ "End": "2013-06-25T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 72,
+ "OwnerID": 2,
+ "Title": "Discuss preojects' deadlines",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T11:00:00.000Z",
+ "End": "2013-06-25T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 73,
+ "OwnerID": 2,
+ "Title": "Support Meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T15:00:00.000Z",
+ "End": "2013-06-25T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 74,
+ "OwnerID": 2,
+ "Title": "Dine with Mathew",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T18:30:00.000Z",
+ "End": "2013-06-25T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 79,
+ "OwnerID": 2,
+ "Title": "Banking",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T09:00:00.000Z",
+ "End": "2013-06-26T10:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 80,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T10:00:00.000Z",
+ "End": "2013-06-25T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 81,
+ "OwnerID": 3,
+ "Title": "UPS maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-25T16:30:00.000Z",
+ "End": "2013-06-25T18:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 82,
+ "OwnerID": 2,
+ "Title": "Support Call",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T11:30:00.000Z",
+ "End": "2013-06-26T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 83,
+ "OwnerID": 3,
+ "Title": "Phone Sync with NY office ",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T13:30:00.000Z",
+ "End": "2013-06-26T14:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 84,
+ "OwnerID": 3,
+ "Title": "Phone Sync with Boston Office",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T15:00:00.000Z",
+ "End": "2013-06-26T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 85,
+ "OwnerID": 3,
+ "Title": "Server maintenance",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-26T18:30:00.000Z",
+ "End": "2013-06-26T21:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": true
+ },
+ {
+ "TaskID": 86,
+ "OwnerID": 2,
+ "Title": "Status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T13:30:00.000Z",
+ "End": "2013-06-28T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 87,
+ "OwnerID": 3,
+ "Title": "Helpdesk status meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T10:30:00.000Z",
+ "End": "2013-06-27T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 88,
+ "OwnerID": 2,
+ "Title": "Business Lunch",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T12:00:00.000Z",
+ "End": "2013-06-27T13:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 89,
+ "OwnerID": 3,
+ "Title": "Employee database update",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T14:00:00.000Z",
+ "End": "2013-06-27T15:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 90,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T07:30:00.000Z",
+ "End": "2013-06-27T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 91,
+ "OwnerID": 2,
+ "Title": "Meeting with marketing guys",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-27T17:00:00.000Z",
+ "End": "2013-06-27T18:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 92,
+ "OwnerID": 3,
+ "Title": "Meeting with Internet provider",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-28T10:30:00.000Z",
+ "End": "2013-06-28T11:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 93,
+ "OwnerID": 3,
+ "Title": "Bob's Birthday Party",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-29T20:00:00.000Z",
+ "End": "2013-06-29T23:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": null,
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 95,
+ "OwnerID": 2,
+ "Title": "Dance Practice",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-03T18:30:00.000Z",
+ "End": "2013-06-03T20:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 114,
+ "OwnerID": 3,
+ "Title": "Software updates",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T09:00:00.000Z",
+ "End": "2013-06-04T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 115,
+ "OwnerID": 1,
+ "Title": "Breakfast at Starbucks",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T08:00:00.000Z",
+ "End": "2013-06-04T09:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 116,
+ "OwnerID": 2,
+ "Title": "Performance review",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-04T14:00:00.000Z",
+ "End": "2013-06-04T17:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 118,
+ "OwnerID": 1,
+ "Title": "HR seminar preparation",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T10:00:00.000Z",
+ "End": "2013-06-05T12:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 119,
+ "OwnerID": 3,
+ "Title": "Helpdesk weekly meeting",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-05T15:00:00.000Z",
+ "End": "2013-06-05T16:00:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ },
+ {
+ "TaskID": 120,
+ "OwnerID": 3,
+ "Title": "Website upload",
+ "Description": "",
+ "StartTimezone": null,
+ "Start": "2013-06-07T07:00:00.000Z",
+ "End": "2013-06-07T08:30:00.000Z",
+ "EndTimezone": null,
+ "RecurrenceRule": "",
+ "RecurrenceID": null,
+ "RecurrenceException": null,
+ "isAllDay": false
+ }
+];
+
+export const customModelFields = {
+ id: 'TaskID',
+ title: 'Title',
+ description: 'Description',
+ start: 'Start',
+ end: 'End',
+ recurrenceRule: 'RecurrenceRule',
+ recurrenceId: 'RecurrenceID',
+ recurrenceExceptions: 'RecurrenceException'
+};
+
+const currentYear = new Date().getFullYear();
+const parseAdjust = (eventDate) => {
+ const date = new Date(eventDate);
+ date.setFullYear(currentYear);
+ return date;
+};
+
+const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
+
+export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
+
+export const sampleData = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+
+ roomId: dataItem.RoomID,
+ ownerID: dataItem.OwnerID,
+ personId: dataItem.OwnerID
+ }
+));
+
+export const sampleDataWithResources = baseData.map(dataItem => (
+ {
+ id: dataItem.TaskID,
+ start: parseAdjust(dataItem.Start),
+ startTimezone: dataItem.startTimezone,
+ end: parseAdjust(dataItem.End),
+ endTimezone: dataItem.endTimezone,
+ isAllDay: dataItem.isAllDay,
+ title: dataItem.Title,
+ description: dataItem.Description,
+ recurrenceRule: dataItem.RecurrenceRule,
+ recurrenceId: dataItem.RecurrenceID,
+ recurrenceExceptions: dataItem.RecurrenceException,
+ roomId: randomInt(1, 2),
+ personId: randomInt(1, 2)
+ }
+));
+
+export const sampleDataWithCustomSchema = baseData.map(dataItem => (
+ {
+ ...dataItem,
+ Start: parseAdjust(dataItem.Start),
+ End: parseAdjust(dataItem.End),
+ PersonIDs: randomInt(1, 2),
+ RoomID: randomInt(1, 2)
+ }
+));
\ No newline at end of file
diff --git a/vue-options-api-demos/scheduler/views/week/grouping/main.js b/vue-options-api-demos/scheduler/views/week/grouping/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/week/grouping/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scheduler/views/week/grouping/main.vue b/vue-options-api-demos/scheduler/views/week/grouping/main.vue
new file mode 100644
index 00000000..76a05dd9
--- /dev/null
+++ b/vue-options-api-demos/scheduler/views/week/grouping/main.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scrollview/active-view/main.js b/vue-options-api-demos/scrollview/active-view/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scrollview/active-view/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scrollview/active-view/main.vue b/vue-options-api-demos/scrollview/active-view/main.vue
new file mode 100644
index 00000000..5e880f32
--- /dev/null
+++ b/vue-options-api-demos/scrollview/active-view/main.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
{{ props.item.title }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scrollview/active-view/styles.css b/vue-options-api-demos/scrollview/active-view/styles.css
new file mode 100644
index 00000000..9eec10fa
--- /dev/null
+++ b/vue-options-api-demos/scrollview/active-view/styles.css
@@ -0,0 +1,18 @@
+.k-scrollview {
+ margin: 0 auto;
+}
+.image-with-text {
+ position: relative;
+}
+.demo-title {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ margin: 0;
+ padding: 15px;
+ color: #fff;
+ background-color: rgba(0, 0, 0, 0.4);
+ text-align: center;
+ font-size: 24px;
+}
diff --git a/vue-options-api-demos/scrollview/arrows/main.js b/vue-options-api-demos/scrollview/arrows/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scrollview/arrows/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scrollview/arrows/main.vue b/vue-options-api-demos/scrollview/arrows/main.vue
new file mode 100644
index 00000000..9e44cd9d
--- /dev/null
+++ b/vue-options-api-demos/scrollview/arrows/main.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
{{ props.item.title }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scrollview/arrows/styles.css b/vue-options-api-demos/scrollview/arrows/styles.css
new file mode 100644
index 00000000..9eec10fa
--- /dev/null
+++ b/vue-options-api-demos/scrollview/arrows/styles.css
@@ -0,0 +1,18 @@
+.k-scrollview {
+ margin: 0 auto;
+}
+.image-with-text {
+ position: relative;
+}
+.demo-title {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ margin: 0;
+ padding: 15px;
+ color: #fff;
+ background-color: rgba(0, 0, 0, 0.4);
+ text-align: center;
+ font-size: 24px;
+}
diff --git a/vue-options-api-demos/scrollview/automatic-interval/main.js b/vue-options-api-demos/scrollview/automatic-interval/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scrollview/automatic-interval/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scrollview/automatic-interval/main.vue b/vue-options-api-demos/scrollview/automatic-interval/main.vue
new file mode 100644
index 00000000..ef9d82cc
--- /dev/null
+++ b/vue-options-api-demos/scrollview/automatic-interval/main.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
{{ props.item.title }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scrollview/automatic-interval/styles.css b/vue-options-api-demos/scrollview/automatic-interval/styles.css
new file mode 100644
index 00000000..9eec10fa
--- /dev/null
+++ b/vue-options-api-demos/scrollview/automatic-interval/styles.css
@@ -0,0 +1,18 @@
+.k-scrollview {
+ margin: 0 auto;
+}
+.image-with-text {
+ position: relative;
+}
+.demo-title {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ margin: 0;
+ padding: 15px;
+ color: #fff;
+ background-color: rgba(0, 0, 0, 0.4);
+ text-align: center;
+ font-size: 24px;
+}
diff --git a/vue-options-api-demos/scrollview/automatic-scrolling/main.js b/vue-options-api-demos/scrollview/automatic-scrolling/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scrollview/automatic-scrolling/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scrollview/automatic-scrolling/main.vue b/vue-options-api-demos/scrollview/automatic-scrolling/main.vue
new file mode 100644
index 00000000..8cacf45e
--- /dev/null
+++ b/vue-options-api-demos/scrollview/automatic-scrolling/main.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
{{ props.item.title }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scrollview/automatic-scrolling/styles.css b/vue-options-api-demos/scrollview/automatic-scrolling/styles.css
new file mode 100644
index 00000000..9eec10fa
--- /dev/null
+++ b/vue-options-api-demos/scrollview/automatic-scrolling/styles.css
@@ -0,0 +1,18 @@
+.k-scrollview {
+ margin: 0 auto;
+}
+.image-with-text {
+ position: relative;
+}
+.demo-title {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ margin: 0;
+ padding: 15px;
+ color: #fff;
+ background-color: rgba(0, 0, 0, 0.4);
+ text-align: center;
+ font-size: 24px;
+}
diff --git a/vue-options-api-demos/scrollview/endless/main.js b/vue-options-api-demos/scrollview/endless/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scrollview/endless/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scrollview/endless/main.vue b/vue-options-api-demos/scrollview/endless/main.vue
new file mode 100644
index 00000000..846da96e
--- /dev/null
+++ b/vue-options-api-demos/scrollview/endless/main.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
{{ props.item.title }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scrollview/endless/styles.css b/vue-options-api-demos/scrollview/endless/styles.css
new file mode 100644
index 00000000..9eec10fa
--- /dev/null
+++ b/vue-options-api-demos/scrollview/endless/styles.css
@@ -0,0 +1,18 @@
+.k-scrollview {
+ margin: 0 auto;
+}
+.image-with-text {
+ position: relative;
+}
+.demo-title {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ margin: 0;
+ padding: 15px;
+ color: #fff;
+ background-color: rgba(0, 0, 0, 0.4);
+ text-align: center;
+ font-size: 24px;
+}
diff --git a/vue-options-api-demos/scrollview/get-started/main.js b/vue-options-api-demos/scrollview/get-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scrollview/get-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scrollview/get-started/main.vue b/vue-options-api-demos/scrollview/get-started/main.vue
new file mode 100644
index 00000000..f4f3e53a
--- /dev/null
+++ b/vue-options-api-demos/scrollview/get-started/main.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scrollview/get-started/styles.css b/vue-options-api-demos/scrollview/get-started/styles.css
new file mode 100644
index 00000000..66c8dcd0
--- /dev/null
+++ b/vue-options-api-demos/scrollview/get-started/styles.css
@@ -0,0 +1,5 @@
+/* center the Carousel horizontally */
+/* k-scrollview is the default component class */
+.k-scrollview {
+ margin: 0 auto;
+}
diff --git a/vue-options-api-demos/scrollview/keyboard-navigation/main.js b/vue-options-api-demos/scrollview/keyboard-navigation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scrollview/keyboard-navigation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scrollview/keyboard-navigation/main.vue b/vue-options-api-demos/scrollview/keyboard-navigation/main.vue
new file mode 100644
index 00000000..665b45e1
--- /dev/null
+++ b/vue-options-api-demos/scrollview/keyboard-navigation/main.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+ Showing image {{ props.item.position }} of {{ props.items.length }}.
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scrollview/keyboard-navigation/styles.css b/vue-options-api-demos/scrollview/keyboard-navigation/styles.css
new file mode 100644
index 00000000..2f7a7b12
--- /dev/null
+++ b/vue-options-api-demos/scrollview/keyboard-navigation/styles.css
@@ -0,0 +1,20 @@
+/* center the Carousel horizontally */
+/* k-scrollview is the default component class */
+.k-scrollview {
+ margin: 0 auto;
+}
+/* enable absolute positioning inside the Carousel template */
+.image-with-text {
+ position: relative;
+}
+
+/* style the overlay text inside the Carousel */
+.image-with-text > p {
+ position: absolute;
+ top: 1rem;
+ left: 1.6rem;
+ color: rgba(255, 255, 255, .8);
+ margin: 0;
+ font-style: italic;
+ text-shadow: 1px 1px 2px rgba(0, 0, 0, .8);
+}
diff --git a/vue-options-api-demos/scrollview/overview/main.js b/vue-options-api-demos/scrollview/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scrollview/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scrollview/overview/main.vue b/vue-options-api-demos/scrollview/overview/main.vue
new file mode 100644
index 00000000..9d5dd49b
--- /dev/null
+++ b/vue-options-api-demos/scrollview/overview/main.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+ Showing image {{ props.item.position }} of {{ props.items.length }}.
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scrollview/overview/styles.css b/vue-options-api-demos/scrollview/overview/styles.css
new file mode 100644
index 00000000..2f7a7b12
--- /dev/null
+++ b/vue-options-api-demos/scrollview/overview/styles.css
@@ -0,0 +1,20 @@
+/* center the Carousel horizontally */
+/* k-scrollview is the default component class */
+.k-scrollview {
+ margin: 0 auto;
+}
+/* enable absolute positioning inside the Carousel template */
+.image-with-text {
+ position: relative;
+}
+
+/* style the overlay text inside the Carousel */
+.image-with-text > p {
+ position: absolute;
+ top: 1rem;
+ left: 1.6rem;
+ color: rgba(255, 255, 255, .8);
+ margin: 0;
+ font-style: italic;
+ text-shadow: 1px 1px 2px rgba(0, 0, 0, .8);
+}
diff --git a/vue-options-api-demos/scrollview/pager-overlay/main.js b/vue-options-api-demos/scrollview/pager-overlay/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scrollview/pager-overlay/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scrollview/pager-overlay/main.vue b/vue-options-api-demos/scrollview/pager-overlay/main.vue
new file mode 100644
index 00000000..34e79a05
--- /dev/null
+++ b/vue-options-api-demos/scrollview/pager-overlay/main.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
{{ props.item.title }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scrollview/pager-overlay/styles.css b/vue-options-api-demos/scrollview/pager-overlay/styles.css
new file mode 100644
index 00000000..9eec10fa
--- /dev/null
+++ b/vue-options-api-demos/scrollview/pager-overlay/styles.css
@@ -0,0 +1,18 @@
+.k-scrollview {
+ margin: 0 auto;
+}
+.image-with-text {
+ position: relative;
+}
+.demo-title {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ margin: 0;
+ padding: 15px;
+ color: #fff;
+ background-color: rgba(0, 0, 0, 0.4);
+ text-align: center;
+ font-size: 24px;
+}
diff --git a/vue-options-api-demos/scrollview/paging/main.js b/vue-options-api-demos/scrollview/paging/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scrollview/paging/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scrollview/paging/main.vue b/vue-options-api-demos/scrollview/paging/main.vue
new file mode 100644
index 00000000..f1cada74
--- /dev/null
+++ b/vue-options-api-demos/scrollview/paging/main.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
{{ props.item.title }}
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scrollview/paging/styles.css b/vue-options-api-demos/scrollview/paging/styles.css
new file mode 100644
index 00000000..9eec10fa
--- /dev/null
+++ b/vue-options-api-demos/scrollview/paging/styles.css
@@ -0,0 +1,18 @@
+.k-scrollview {
+ margin: 0 auto;
+}
+.image-with-text {
+ position: relative;
+}
+.demo-title {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ margin: 0;
+ padding: 15px;
+ color: #fff;
+ background-color: rgba(0, 0, 0, 0.4);
+ text-align: center;
+ font-size: 24px;
+}
diff --git a/vue-options-api-demos/scrollview/rtl/main.js b/vue-options-api-demos/scrollview/rtl/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/scrollview/rtl/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/scrollview/rtl/main.vue b/vue-options-api-demos/scrollview/rtl/main.vue
new file mode 100644
index 00000000..8fccd2c4
--- /dev/null
+++ b/vue-options-api-demos/scrollview/rtl/main.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/scrollview/rtl/styles.css b/vue-options-api-demos/scrollview/rtl/styles.css
new file mode 100644
index 00000000..66c8dcd0
--- /dev/null
+++ b/vue-options-api-demos/scrollview/rtl/styles.css
@@ -0,0 +1,5 @@
+/* center the Carousel horizontally */
+/* k-scrollview is the default component class */
+.k-scrollview {
+ margin: 0 auto;
+}
diff --git a/vue-options-api-demos/tooltip/controlled-mode/main.js b/vue-options-api-demos/tooltip/controlled-mode/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/tooltip/controlled-mode/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/tooltip/controlled-mode/main.vue b/vue-options-api-demos/tooltip/controlled-mode/main.vue
new file mode 100644
index 00000000..44816450
--- /dev/null
+++ b/vue-options-api-demos/tooltip/controlled-mode/main.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+ Click the button to show the tooltip with
+
+ first link
+
+ as an anchor.
+
+ Show Tooltip
+
+
+
+ Click the button to show the tooltip with
+
+ second link
+
+ as an anchor.
+
+ Show Tooltip
+
+
+
+
Hide Tooltip
+
+
+
+
+
+
diff --git a/vue-options-api-demos/tooltip/customization/main.js b/vue-options-api-demos/tooltip/customization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/tooltip/customization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/tooltip/customization/main.vue b/vue-options-api-demos/tooltip/customization/main.vue
new file mode 100644
index 00000000..e1c85908
--- /dev/null
+++ b/vue-options-api-demos/tooltip/customization/main.vue
@@ -0,0 +1,62 @@
+
+
+
+
+ I have the browser tooltip
+
+
+
+
+ I do not have a tooltip
+
+
+
$refs.tooltip && $refs.tooltip.handleMouseOver(event)
+ "
+ @mouseout="
+ (event) => $refs.tooltip && $refs.tooltip.handleMouseOut(event)
+ "
+ >
+
+ I have a Kendo UI for Vue Native Tooltip
+
+
+
+
$refs.tooltip && $refs.tooltip.handleMouseOver(event)
+ "
+ @mouseout="
+ (event) => $refs.tooltip && $refs.tooltip.handleMouseOut(event)
+ "
+ >
+
+ I also the same Kendo UI for Vue Native Tooltip
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/tooltip/events/Logger.vue b/vue-options-api-demos/tooltip/events/Logger.vue
new file mode 100644
index 00000000..f2917aa1
--- /dev/null
+++ b/vue-options-api-demos/tooltip/events/Logger.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/tooltip/events/main.js b/vue-options-api-demos/tooltip/events/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/tooltip/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/tooltip/events/main.vue b/vue-options-api-demos/tooltip/events/main.vue
new file mode 100644
index 00000000..02975945
--- /dev/null
+++ b/vue-options-api-demos/tooltip/events/main.vue
@@ -0,0 +1,57 @@
+
+
+
+
diff --git a/vue-options-api-demos/tooltip/events/styles.css b/vue-options-api-demos/tooltip/events/styles.css
new file mode 100644
index 00000000..6a995f79
--- /dev/null
+++ b/vue-options-api-demos/tooltip/events/styles.css
@@ -0,0 +1,72 @@
+#agglomerations {
+ position: relative;
+ width: 692px;
+ height: 480px;
+ margin: 0 auto;
+ background: url('https://www.telerik.com/kendo-vue-ui/components/tooltip/assets/world-map.jpg')
+ no-repeat 0 0;
+ }
+
+ #agglomerations > a {
+ cursor: pointer;
+ position: absolute;
+ display: block;
+ width: 12px;
+ height: 12px;
+ background-color: #fff600;
+ border-radius: 30px;
+ border: 0;
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5);
+ transition: box-shadow 0.3s;
+ z-index: 10;
+ }
+
+ #agglomerations > a:hover {
+ box-shadow: 0 0 0 15px rgba(0, 0, 0, 0.5);
+ }
+
+ #canton {
+ top: 226px;
+ left: 501px;
+ }
+ #jakarta {
+ top: 266px;
+ left: 494px;
+ }
+ #mexico {
+ top: 227px;
+ left: 182px;
+ }
+ #delhi {
+ top: 214px;
+ left: 448px;
+ }
+ #karachi {
+ top: 222px;
+ left: 431px;
+ }
+ #newyork {
+ top: 188px;
+ left: 214px;
+ }
+ #saopaolo {
+ top: 304px;
+ left: 248px;
+ }
+ #bombay {
+ top: 233px;
+ left: 438px;
+ }
+ #losangeles {
+ top: 202px;
+ left: 148px;
+ }
+ #osaka {
+ top: 201px;
+ left: 535px;
+ }
+ #moscow {
+ top: 153px;
+ left: 402px;
+ }
+
\ No newline at end of file
diff --git a/vue-options-api-demos/tooltip/filters/main.js b/vue-options-api-demos/tooltip/filters/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/tooltip/filters/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/tooltip/filters/main.vue b/vue-options-api-demos/tooltip/filters/main.vue
new file mode 100644
index 00000000..dc3d00ef
--- /dev/null
+++ b/vue-options-api-demos/tooltip/filters/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+ In this demo, the
+
+ Kendo UI for Vue Native Tooltip
+
+ will show only when you hover <strong>
+ elements
+ .
+
+
+ Other elements, like
+ this link
+ , will only show the default browser tooltip, even though they have a
+ specified
+ title
+ attribute.
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/tooltip/grid-integration/main.js b/vue-options-api-demos/tooltip/grid-integration/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/tooltip/grid-integration/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/tooltip/grid-integration/main.vue b/vue-options-api-demos/tooltip/grid-integration/main.vue
new file mode 100644
index 00000000..370ab687
--- /dev/null
+++ b/vue-options-api-demos/tooltip/grid-integration/main.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/tooltip/multiple/main.js b/vue-options-api-demos/tooltip/multiple/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/tooltip/multiple/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/tooltip/multiple/main.vue b/vue-options-api-demos/tooltip/multiple/main.vue
new file mode 100644
index 00000000..c746aa29
--- /dev/null
+++ b/vue-options-api-demos/tooltip/multiple/main.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
+ This is the first Tooltip with position right.
+
+
+
+
+
+
+
+ This is the second Tooltip with position left.
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/tooltip/overview/main.js b/vue-options-api-demos/tooltip/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/tooltip/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/tooltip/overview/main.vue b/vue-options-api-demos/tooltip/overview/main.vue
new file mode 100644
index 00000000..1939dcd9
--- /dev/null
+++ b/vue-options-api-demos/tooltip/overview/main.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/tooltip/overview/styles.css b/vue-options-api-demos/tooltip/overview/styles.css
new file mode 100644
index 00000000..fef10b43
--- /dev/null
+++ b/vue-options-api-demos/tooltip/overview/styles.css
@@ -0,0 +1,71 @@
+#agglomerations {
+ position: relative;
+ width: 692px;
+ height: 480px;
+ margin: 0 auto;
+ background: url('https://demos.telerik.com/kendo-vue-ui/assets/tooltips/world-map.jpg')
+ no-repeat 0 0;
+ }
+
+ #agglomerations > a {
+ cursor: pointer;
+ position: absolute;
+ display: block;
+ width: 12px;
+ height: 12px;
+ background-color: #fff600;
+ border-radius: 30px;
+ border: 0;
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5);
+ transition: box-shadow 0.3s;
+ z-index: 10;
+ }
+
+ #agglomerations > a:hover {
+ box-shadow: 0 0 0 15px rgba(0, 0, 0, 0.5);
+ }
+
+ #canton {
+ top: 226px;
+ left: 501px;
+ }
+ #jakarta {
+ top: 266px;
+ left: 494px;
+ }
+ #mexico {
+ top: 227px;
+ left: 182px;
+ }
+ #delhi {
+ top: 214px;
+ left: 448px;
+ }
+ #karachi {
+ top: 222px;
+ left: 431px;
+ }
+ #newyork {
+ top: 188px;
+ left: 214px;
+ }
+ #saopaolo {
+ top: 304px;
+ left: 248px;
+ }
+ #bombay {
+ top: 233px;
+ left: 438px;
+ }
+ #losangeles {
+ top: 202px;
+ left: 148px;
+ }
+ #osaka {
+ top: 201px;
+ left: 535px;
+ }
+ #moscow {
+ top: 153px;
+ left: 402px;
+ }
diff --git a/vue-options-api-demos/tooltip/positioning/main.js b/vue-options-api-demos/tooltip/positioning/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/tooltip/positioning/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/tooltip/positioning/main.vue b/vue-options-api-demos/tooltip/positioning/main.vue
new file mode 100644
index 00000000..b5a23d32
--- /dev/null
+++ b/vue-options-api-demos/tooltip/positioning/main.vue
@@ -0,0 +1,76 @@
+
+
+
+
+ Change position
+
+
+
+ Change anchor
+
+
+
+ Hover me
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/tooltip/shared/products.json b/vue-options-api-demos/tooltip/shared/products.json
new file mode 100644
index 00000000..4df1c408
--- /dev/null
+++ b/vue-options-api-demos/tooltip/shared/products.json
@@ -0,0 +1,1233 @@
+[{
+ "ProductID" : 1,
+ "ProductName" : "Chai",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "10 boxes x 20 bags",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 2,
+ "ProductName" : "Chang",
+ "SupplierID" : 1,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 3,
+ "ProductName" : "Aniseed Syrup",
+ "SupplierID" : 1,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 550 ml bottles",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 13,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 4,
+ "ProductName" : "Chef Anton's Cajun Seasoning",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "48 - 6 oz jars",
+ "UnitPrice" : 22.0000,
+ "UnitsInStock" : 53,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 5,
+ "ProductName" : "Chef Anton's Gumbo Mix",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "36 boxes",
+ "UnitPrice" : 21.3500,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 6,
+ "ProductName" : "Grandma's Boysenberry Spread",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 8 oz jars",
+ "UnitPrice" : 25.0000,
+ "UnitsInStock" : 120,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 7,
+ "ProductName" : "Uncle Bob's Organic Dried Pears",
+ "SupplierID" : 3,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "12 - 1 lb pkgs.",
+ "UnitPrice" : 30.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 8,
+ "ProductName" : "Northwoods Cranberry Sauce",
+ "SupplierID" : 3,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 - 12 oz jars",
+ "UnitPrice" : 40.0000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 9,
+ "ProductName" : "Mishi Kobe Niku",
+ "SupplierID" : 4,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "18 - 500 g pkgs.",
+ "UnitPrice" : 97.0000,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 10,
+ "ProductName" : "Ikura",
+ "SupplierID" : 4,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 200 ml jars",
+ "UnitPrice" : 31.0000,
+ "UnitsInStock" : 31,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 11,
+ "ProductName" : "Queso Cabrales",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "1 kg pkg.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 30,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 12,
+ "ProductName" : "Queso Manchego La Pastora",
+ "SupplierID" : 5,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 86,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 13,
+ "ProductName" : "Konbu",
+ "SupplierID" : 6,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "2 kg box",
+ "UnitPrice" : 6.0000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 14,
+ "ProductName" : "Tofu",
+ "SupplierID" : 6,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "40 - 100 g pkgs.",
+ "UnitPrice" : 23.2500,
+ "UnitsInStock" : 35,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 15,
+ "ProductName" : "Genen Shouyu",
+ "SupplierID" : 6,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 250 ml bottles",
+ "UnitPrice" : 15.5000,
+ "UnitsInStock" : 39,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 16,
+ "ProductName" : "Pavlova",
+ "SupplierID" : 7,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "32 - 500 g boxes",
+ "UnitPrice" : 17.4500,
+ "UnitsInStock" : 29,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 17,
+ "ProductName" : "Alice Mutton",
+ "SupplierID" : 7,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "20 - 1 kg tins",
+ "UnitPrice" : 39.0000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 18,
+ "ProductName" : "Carnarvon Tigers",
+ "SupplierID" : 7,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "16 kg pkg.",
+ "UnitPrice" : 62.5000,
+ "UnitsInStock" : 42,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 19,
+ "ProductName" : "Teatime Chocolate Biscuits",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 12 pieces",
+ "UnitPrice" : 9.2000,
+ "UnitsInStock" : 25,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 20,
+ "ProductName" : "Sir Rodney's Marmalade",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "30 gift boxes",
+ "UnitPrice" : 81.0000,
+ "UnitsInStock" : 40,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 21,
+ "ProductName" : "Sir Rodney's Scones",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 pkgs. x 4 pieces",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 3,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 22,
+ "ProductName" : "Gustaf's Knäckebröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 500 g pkgs.",
+ "UnitPrice" : 21.0000,
+ "UnitsInStock" : 104,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 23,
+ "ProductName" : "Tunnbröd",
+ "SupplierID" : 9,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "12 - 250 g pkgs.",
+ "UnitPrice" : 9.0000,
+ "UnitsInStock" : 61,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 24,
+ "ProductName" : "Guaraná Fantástica",
+ "SupplierID" : 10,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 355 ml cans",
+ "UnitPrice" : 4.5000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 25,
+ "ProductName" : "NuNuCa Nuß-Nougat-Creme",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "20 - 450 g glasses",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 26,
+ "ProductName" : "Gumbär Gummibärchen",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 250 g bags",
+ "UnitPrice" : 31.2300,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 27,
+ "ProductName" : "Schoggi Schokolade",
+ "SupplierID" : 11,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "100 - 100 g pieces",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 49,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 28,
+ "ProductName" : "Rössle Sauerkraut",
+ "SupplierID" : 12,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "25 - 825 g cans",
+ "UnitPrice" : 45.6000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 29,
+ "ProductName" : "Thüringer Rostbratwurst",
+ "SupplierID" : 12,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "50 bags x 30 sausgs.",
+ "UnitPrice" : 123.7900,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 30,
+ "ProductName" : "Nord-Ost Matjeshering",
+ "SupplierID" : 13,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "10 - 200 g glasses",
+ "UnitPrice" : 25.8900,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 31,
+ "ProductName" : "Gorgonzola Telino",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "12 - 100 g pkgs",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 32,
+ "ProductName" : "Mascarpone Fabioli",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 32.0000,
+ "UnitsInStock" : 9,
+ "UnitsOnOrder" : 40,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 33,
+ "ProductName" : "Geitost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "500 g",
+ "UnitPrice" : 2.5000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 34,
+ "ProductName" : "Sasquatch Ale",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 111,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 35,
+ "ProductName" : "Steeleye Stout",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 36,
+ "ProductName" : "Inlagd Sill",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 250 g jars",
+ "UnitPrice" : 19.0000,
+ "UnitsInStock" : 112,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 37,
+ "ProductName" : "Gravad lax",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 500 g pkgs.",
+ "UnitPrice" : 26.0000,
+ "UnitsInStock" : 11,
+ "UnitsOnOrder" : 50,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 38,
+ "ProductName" : "Côte de Blaye",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "12 - 75 cl bottles",
+ "UnitPrice" : 263.5000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 39,
+ "ProductName" : "Chartreuse verte",
+ "SupplierID" : 18,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "750 cc per bottle",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 69,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 40,
+ "ProductName" : "Boston Crab Meat",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 4 oz tins",
+ "UnitPrice" : 18.4000,
+ "UnitsInStock" : 123,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 41,
+ "ProductName" : "Jack's New England Clam Chowder",
+ "SupplierID" : 19,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "12 - 12 oz cans",
+ "UnitPrice" : 9.6500,
+ "UnitsInStock" : 85,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 42,
+ "ProductName" : "Singaporean Hokkien Fried Mee",
+ "SupplierID" : 20,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "32 - 1 kg pkgs.",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 43,
+ "ProductName" : "Ipoh Coffee",
+ "SupplierID" : 20,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "16 - 500 g tins",
+ "UnitPrice" : 46.0000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 44,
+ "ProductName" : "Gula Malacca",
+ "SupplierID" : 20,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "20 - 2 kg bags",
+ "UnitPrice" : 19.4500,
+ "UnitsInStock" : 27,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 45,
+ "ProductName" : "Rogede sild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "1k pkg.",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 5,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 46,
+ "ProductName" : "Spegesild",
+ "SupplierID" : 21,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "4 - 450 g glasses",
+ "UnitPrice" : 12.0000,
+ "UnitsInStock" : 95,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 47,
+ "ProductName" : "Zaanse koeken",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 - 4 oz boxes",
+ "UnitPrice" : 9.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 48,
+ "ProductName" : "Chocolade",
+ "SupplierID" : 22,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 pkgs.",
+ "UnitPrice" : 12.7500,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 70,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 49,
+ "ProductName" : "Maxilaku",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "24 - 50 g pkgs.",
+ "UnitPrice" : 20.0000,
+ "UnitsInStock" : 10,
+ "UnitsOnOrder" : 60,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 50,
+ "ProductName" : "Valkoinen suklaa",
+ "SupplierID" : 23,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "12 - 100 g bars",
+ "UnitPrice" : 16.2500,
+ "UnitsInStock" : 65,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 51,
+ "ProductName" : "Manjimup Dried Apples",
+ "SupplierID" : 24,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "50 - 300 g pkgs.",
+ "UnitPrice" : 53.0000,
+ "UnitsInStock" : 20,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 52,
+ "ProductName" : "Filo Mix",
+ "SupplierID" : 24,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "16 - 2 kg boxes",
+ "UnitPrice" : 7.0000,
+ "UnitsInStock" : 38,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 53,
+ "ProductName" : "Perth Pasties",
+ "SupplierID" : 24,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "48 pieces",
+ "UnitPrice" : 32.8000,
+ "UnitsInStock" : 0,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : true,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 54,
+ "ProductName" : "Tourtière",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "16 pies",
+ "UnitPrice" : 7.4500,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 55,
+ "ProductName" : "Pâté chinois",
+ "SupplierID" : 25,
+ "CategoryID" : 6,
+ "QuantityPerUnit" : "24 boxes x 2 pies",
+ "UnitPrice" : 24.0000,
+ "UnitsInStock" : 115,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 6,
+ "CategoryName" : "Meat/Poultry",
+ "Description" : "Prepared meats"
+ }
+}, {
+ "ProductID" : 56,
+ "ProductName" : "Gnocchi di nonna Alice",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 38.0000,
+ "UnitsInStock" : 21,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 57,
+ "ProductName" : "Ravioli Angelo",
+ "SupplierID" : 26,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "24 - 250 g pkgs.",
+ "UnitPrice" : 19.5000,
+ "UnitsInStock" : 36,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 58,
+ "ProductName" : "Escargots de Bourgogne",
+ "SupplierID" : 27,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 pieces",
+ "UnitPrice" : 13.2500,
+ "UnitsInStock" : 62,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 59,
+ "ProductName" : "Raclette Courdavault",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 55.0000,
+ "UnitsInStock" : 79,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 60,
+ "ProductName" : "Camembert Pierrot",
+ "SupplierID" : 28,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "15 - 300 g rounds",
+ "UnitPrice" : 34.0000,
+ "UnitsInStock" : 19,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 61,
+ "ProductName" : "Sirop d'érable",
+ "SupplierID" : 29,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 500 ml bottles",
+ "UnitPrice" : 28.5000,
+ "UnitsInStock" : 113,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 62,
+ "ProductName" : "Tarte au sucre",
+ "SupplierID" : 29,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "48 pies",
+ "UnitPrice" : 49.3000,
+ "UnitsInStock" : 17,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 63,
+ "ProductName" : "Vegie-spread",
+ "SupplierID" : 7,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "15 - 625 g jars",
+ "UnitPrice" : 43.9000,
+ "UnitsInStock" : 24,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 64,
+ "ProductName" : "Wimmers gute Semmelknödel",
+ "SupplierID" : 12,
+ "CategoryID" : 5,
+ "QuantityPerUnit" : "20 bags x 4 pieces",
+ "UnitPrice" : 33.2500,
+ "UnitsInStock" : 22,
+ "UnitsOnOrder" : 80,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 5,
+ "CategoryName" : "Grains/Cereals",
+ "Description" : "Breads, crackers, pasta, and cereal"
+ }
+}, {
+ "ProductID" : 65,
+ "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "32 - 8 oz bottles",
+ "UnitPrice" : 21.0500,
+ "UnitsInStock" : 76,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 66,
+ "ProductName" : "Louisiana Hot Spiced Okra",
+ "SupplierID" : 2,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "24 - 8 oz jars",
+ "UnitPrice" : 17.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 100,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}, {
+ "ProductID" : 67,
+ "ProductName" : "Laughing Lumberjack Lager",
+ "SupplierID" : 16,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 12 oz bottles",
+ "UnitPrice" : 14.0000,
+ "UnitsInStock" : 52,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 10,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 68,
+ "ProductName" : "Scottish Longbreads",
+ "SupplierID" : 8,
+ "CategoryID" : 3,
+ "QuantityPerUnit" : "10 boxes x 8 pieces",
+ "UnitPrice" : 12.5000,
+ "UnitsInStock" : 6,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 3,
+ "CategoryName" : "Confections",
+ "Description" : "Desserts, candies, and sweet breads"
+ }
+}, {
+ "ProductID" : 69,
+ "ProductName" : "Gudbrandsdalsost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 kg pkg.",
+ "UnitPrice" : 36.0000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 70,
+ "ProductName" : "Outback Lager",
+ "SupplierID" : 7,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 355 ml bottles",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 15,
+ "UnitsOnOrder" : 10,
+ "ReorderLevel" : 30,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 71,
+ "ProductName" : "Flotemysost",
+ "SupplierID" : 15,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "10 - 500 g pkgs.",
+ "UnitPrice" : 21.5000,
+ "UnitsInStock" : 26,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 72,
+ "ProductName" : "Mozzarella di Giovanni",
+ "SupplierID" : 14,
+ "CategoryID" : 4,
+ "QuantityPerUnit" : "24 - 200 g pkgs.",
+ "UnitPrice" : 34.8000,
+ "UnitsInStock" : 14,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 0,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 4,
+ "CategoryName" : "Dairy Products",
+ "Description" : "Cheeses"
+ }
+}, {
+ "ProductID" : 73,
+ "ProductName" : "Röd Kaviar",
+ "SupplierID" : 17,
+ "CategoryID" : 8,
+ "QuantityPerUnit" : "24 - 150 g jars",
+ "UnitPrice" : 15.0000,
+ "UnitsInStock" : 101,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 8,
+ "CategoryName" : "Seafood",
+ "Description" : "Seaweed and fish"
+ }
+}, {
+ "ProductID" : 74,
+ "ProductName" : "Longlife Tofu",
+ "SupplierID" : 4,
+ "CategoryID" : 7,
+ "QuantityPerUnit" : "5 kg pkg.",
+ "UnitPrice" : 10.0000,
+ "UnitsInStock" : 4,
+ "UnitsOnOrder" : 20,
+ "ReorderLevel" : 5,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 7,
+ "CategoryName" : "Produce",
+ "Description" : "Dried fruit and bean curd"
+ }
+}, {
+ "ProductID" : 75,
+ "ProductName" : "Rhönbräu Klosterbier",
+ "SupplierID" : 12,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "24 - 0.5 l bottles",
+ "UnitPrice" : 7.7500,
+ "UnitsInStock" : 125,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 25,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 76,
+ "ProductName" : "Lakkalikööri",
+ "SupplierID" : 23,
+ "CategoryID" : 1,
+ "QuantityPerUnit" : "500 ml",
+ "UnitPrice" : 18.0000,
+ "UnitsInStock" : 57,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 20,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 1,
+ "CategoryName" : "Beverages",
+ "Description" : "Soft drinks, coffees, teas, beers, and ales"
+ }
+}, {
+ "ProductID" : 77,
+ "ProductName" : "Original Frankfurter grüne Soße",
+ "SupplierID" : 12,
+ "CategoryID" : 2,
+ "QuantityPerUnit" : "12 boxes",
+ "UnitPrice" : 13.0000,
+ "UnitsInStock" : 32,
+ "UnitsOnOrder" : 0,
+ "ReorderLevel" : 15,
+ "Discontinued" : false,
+ "Category" : {
+ "CategoryID" : 2,
+ "CategoryName" : "Condiments",
+ "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
+ }
+}]
diff --git a/vue-options-api-demos/tooltip/svg/main.js b/vue-options-api-demos/tooltip/svg/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/tooltip/svg/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/tooltip/svg/main.vue b/vue-options-api-demos/tooltip/svg/main.vue
new file mode 100644
index 00000000..f2aa8650
--- /dev/null
+++ b/vue-options-api-demos/tooltip/svg/main.vue
@@ -0,0 +1,303 @@
+
+
+
+
+
+ Kendo Vue Kendoka
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/tooltip/templates/main.js b/vue-options-api-demos/tooltip/templates/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/tooltip/templates/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/tooltip/templates/main.vue b/vue-options-api-demos/tooltip/templates/main.vue
new file mode 100644
index 00000000..e4af282d
--- /dev/null
+++ b/vue-options-api-demos/tooltip/templates/main.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/aggregates/data.js b/vue-options-api-demos/treelist/aggregates/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/aggregates/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/aggregates/main.js b/vue-options-api-demos/treelist/aggregates/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/aggregates/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/aggregates/main.vue b/vue-options-api-demos/treelist/aggregates/main.vue
new file mode 100644
index 00000000..1124c541
--- /dev/null
+++ b/vue-options-api-demos/treelist/aggregates/main.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/cells-custom/data.js b/vue-options-api-demos/treelist/cells-custom/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/cells-custom/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/cells-custom/main.js b/vue-options-api-demos/treelist/cells-custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/cells-custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/cells-custom/main.vue b/vue-options-api-demos/treelist/cells-custom/main.vue
new file mode 100644
index 00000000..88a843b2
--- /dev/null
+++ b/vue-options-api-demos/treelist/cells-custom/main.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+ {{ props.value }}
+
+
+
+
+
+
+
+
+
+
+ {{ props.value }}
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/column-menu/data.js b/vue-options-api-demos/treelist/column-menu/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/column-menu/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/column-menu/main.js b/vue-options-api-demos/treelist/column-menu/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/column-menu/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/column-menu/main.vue b/vue-options-api-demos/treelist/column-menu/main.vue
new file mode 100644
index 00000000..1e2829b9
--- /dev/null
+++ b/vue-options-api-demos/treelist/column-menu/main.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/column-virtualization/main.js b/vue-options-api-demos/treelist/column-virtualization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/column-virtualization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/column-virtualization/main.vue b/vue-options-api-demos/treelist/column-virtualization/main.vue
new file mode 100644
index 00000000..49485595
--- /dev/null
+++ b/vue-options-api-demos/treelist/column-virtualization/main.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/column-virtualization/treelist-data.js b/vue-options-api-demos/treelist/column-virtualization/treelist-data.js
new file mode 100644
index 00000000..c5ec456c
--- /dev/null
+++ b/vue-options-api-demos/treelist/column-virtualization/treelist-data.js
@@ -0,0 +1,26 @@
+export function generateData(numberOfColumns, columnWidth, numberOfRows, subItemsField) {
+ const columns = [];
+ for (let c = 1; c <= numberOfColumns; c++) {
+ columns.push({ field: 'Field-' + c.toString(), width: columnWidth });
+ }
+ columns[0].expandable = true;
+
+ const data = [];
+ const reducer = (acc, cur) => {
+ acc[cur[0]] = cur[0] !== 'id' ? 'Sub ' + cur[1] : cur[0];
+ return acc;
+ };
+
+ for (let r = 1; r <= numberOfRows; r++) {
+ const row = { id: r };
+ for (let c = 1; c <= numberOfColumns; c++) {
+ row['Field-' + c] = 'R' + r + ':C' + c;
+ }
+
+ const subItem = Object.entries(row).reduce(reducer, {});
+ row[subItemsField] = [subItem, { ...subItem }, { ...subItem }];
+ data.push(row);
+ }
+
+ return { columns, data };
+}
diff --git a/vue-options-api-demos/treelist/column-width-fixed/data.js b/vue-options-api-demos/treelist/column-width-fixed/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/column-width-fixed/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/column-width-fixed/main.js b/vue-options-api-demos/treelist/column-width-fixed/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/column-width-fixed/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/column-width-fixed/main.vue b/vue-options-api-demos/treelist/column-width-fixed/main.vue
new file mode 100644
index 00000000..879c995b
--- /dev/null
+++ b/vue-options-api-demos/treelist/column-width-fixed/main.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/column-width-percentage/data.js b/vue-options-api-demos/treelist/column-width-percentage/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/column-width-percentage/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/column-width-percentage/main.js b/vue-options-api-demos/treelist/column-width-percentage/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/column-width-percentage/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/column-width-percentage/main.vue b/vue-options-api-demos/treelist/column-width-percentage/main.vue
new file mode 100644
index 00000000..740c2df8
--- /dev/null
+++ b/vue-options-api-demos/treelist/column-width-percentage/main.vue
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/dragdrop/data.js b/vue-options-api-demos/treelist/dragdrop/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/dragdrop/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/dragdrop/main.js b/vue-options-api-demos/treelist/dragdrop/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/dragdrop/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/dragdrop/main.vue b/vue-options-api-demos/treelist/dragdrop/main.vue
new file mode 100644
index 00000000..d5a0b210
--- /dev/null
+++ b/vue-options-api-demos/treelist/dragdrop/main.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/treelist/editing-external-form/CommandCell.vue b/vue-options-api-demos/treelist/editing-external-form/CommandCell.vue
new file mode 100644
index 00000000..da5d81f7
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-external-form/CommandCell.vue
@@ -0,0 +1,49 @@
+
+
+
+ Edit
+
+
+
+ Remove
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/treelist/editing-external-form/DialogContainer.vue b/vue-options-api-demos/treelist/editing-external-form/DialogContainer.vue
new file mode 100644
index 00000000..50401abb
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-external-form/DialogContainer.vue
@@ -0,0 +1,86 @@
+
+
+
+
+ Save
+ Cancel
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/treelist/editing-external-form/data.js b/vue-options-api-demos/treelist/editing-external-form/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-external-form/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/editing-external-form/main.js b/vue-options-api-demos/treelist/editing-external-form/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-external-form/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/editing-external-form/main.vue b/vue-options-api-demos/treelist/editing-external-form/main.vue
new file mode 100644
index 00000000..b11f9055
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-external-form/main.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/treelist/editing-in-cell/data.js b/vue-options-api-demos/treelist/editing-in-cell/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-in-cell/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/editing-in-cell/main.js b/vue-options-api-demos/treelist/editing-in-cell/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-in-cell/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/editing-in-cell/main.vue b/vue-options-api-demos/treelist/editing-in-cell/main.vue
new file mode 100644
index 00000000..6c14f986
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-in-cell/main.vue
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+ Save Changes
+
+
+ Cancel Changes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/editing-inline/CommandCell.vue b/vue-options-api-demos/treelist/editing-inline/CommandCell.vue
new file mode 100644
index 00000000..4b7da8ba
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-inline/CommandCell.vue
@@ -0,0 +1,90 @@
+
+
+
+ Add Employee
+
+
+ {{editText}}
+
+
+ {{removeText}}
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/treelist/editing-inline/data.js b/vue-options-api-demos/treelist/editing-inline/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-inline/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/editing-inline/main.js b/vue-options-api-demos/treelist/editing-inline/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-inline/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/editing-inline/main.vue b/vue-options-api-demos/treelist/editing-inline/main.vue
new file mode 100644
index 00000000..a2b3620e
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-inline/main.vue
@@ -0,0 +1,191 @@
+
+
+
+
+
+ Add new
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/editing-row-click/data.js b/vue-options-api-demos/treelist/editing-row-click/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-row-click/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/editing-row-click/main.js b/vue-options-api-demos/treelist/editing-row-click/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-row-click/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/editing-row-click/main.vue b/vue-options-api-demos/treelist/editing-row-click/main.vue
new file mode 100644
index 00000000..8407db5f
--- /dev/null
+++ b/vue-options-api-demos/treelist/editing-row-click/main.vue
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+ Add new
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/excel/basic/data.js b/vue-options-api-demos/treelist/excel/basic/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/excel/basic/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/excel/basic/main.js b/vue-options-api-demos/treelist/excel/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/excel/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/excel/basic/main.vue b/vue-options-api-demos/treelist/excel/basic/main.vue
new file mode 100644
index 00000000..2851efe7
--- /dev/null
+++ b/vue-options-api-demos/treelist/excel/basic/main.vue
@@ -0,0 +1,104 @@
+
+
+
+ Export Excel
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/treelist/excel/customization/data.js b/vue-options-api-demos/treelist/excel/customization/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/excel/customization/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/excel/customization/main.js b/vue-options-api-demos/treelist/excel/customization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/excel/customization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/excel/customization/main.vue b/vue-options-api-demos/treelist/excel/customization/main.vue
new file mode 100644
index 00000000..1571df77
--- /dev/null
+++ b/vue-options-api-demos/treelist/excel/customization/main.vue
@@ -0,0 +1,126 @@
+
+
+
+ Export Excel
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/excel/single-page/data.js b/vue-options-api-demos/treelist/excel/single-page/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/excel/single-page/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/excel/single-page/main.js b/vue-options-api-demos/treelist/excel/single-page/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/excel/single-page/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/excel/single-page/main.vue b/vue-options-api-demos/treelist/excel/single-page/main.vue
new file mode 100644
index 00000000..7b7dea10
--- /dev/null
+++ b/vue-options-api-demos/treelist/excel/single-page/main.vue
@@ -0,0 +1,115 @@
+
+
+
+ Export Excel
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/filtering-basic/data.js b/vue-options-api-demos/treelist/filtering-basic/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/filtering-basic/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/filtering-basic/main.js b/vue-options-api-demos/treelist/filtering-basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/filtering-basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/filtering-basic/main.vue b/vue-options-api-demos/treelist/filtering-basic/main.vue
new file mode 100644
index 00000000..26633445
--- /dev/null
+++ b/vue-options-api-demos/treelist/filtering-basic/main.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/filtering-custom/DropDownListFilter.vue b/vue-options-api-demos/treelist/filtering-custom/DropDownListFilter.vue
new file mode 100644
index 00000000..0318afcf
--- /dev/null
+++ b/vue-options-api-demos/treelist/filtering-custom/DropDownListFilter.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/treelist/filtering-custom/data.js b/vue-options-api-demos/treelist/filtering-custom/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/filtering-custom/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/filtering-custom/main.js b/vue-options-api-demos/treelist/filtering-custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/filtering-custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/filtering-custom/main.vue b/vue-options-api-demos/treelist/filtering-custom/main.vue
new file mode 100644
index 00000000..43fae07b
--- /dev/null
+++ b/vue-options-api-demos/treelist/filtering-custom/main.vue
@@ -0,0 +1,126 @@
+
+
+
+
+ {
+ props.onChange({
+ operator: 'eq',
+ field: props.field,
+ value: ev.value,
+ syntheticEvent: ev.syntheticEvent,
+ });
+ }
+ "
+ />
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/flat-data/flat-data.js b/vue-options-api-demos/treelist/flat-data/flat-data.js
new file mode 100644
index 00000000..6ca1dc52
--- /dev/null
+++ b/vue-options-api-demos/treelist/flat-data/flat-data.js
@@ -0,0 +1,1093 @@
+const employeesFlat = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2
+ },
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3
+ },
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2
+ },
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0
+ },
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4
+ },
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4
+ },
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6
+ },
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6
+ },
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ },
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ },
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ },
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+ },
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1
+ },
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+ },
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0
+ },
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2
+ },
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+];
+
+export default employeesFlat;
diff --git a/vue-options-api-demos/treelist/flat-data/main.js b/vue-options-api-demos/treelist/flat-data/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/flat-data/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/flat-data/main.vue b/vue-options-api-demos/treelist/flat-data/main.vue
new file mode 100644
index 00000000..467d9b9f
--- /dev/null
+++ b/vue-options-api-demos/treelist/flat-data/main.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/get-started/main.js b/vue-options-api-demos/treelist/get-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/get-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/get-started/main.vue b/vue-options-api-demos/treelist/get-started/main.vue
new file mode 100644
index 00000000..c1eeaeb6
--- /dev/null
+++ b/vue-options-api-demos/treelist/get-started/main.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/get-started/simple-data.js b/vue-options-api-demos/treelist/get-started/simple-data.js
new file mode 100644
index 00000000..b35aca00
--- /dev/null
+++ b/vue-options-api-demos/treelist/get-started/simple-data.js
@@ -0,0 +1,28 @@
+const data = [
+ {
+ id: 1,
+ name: "Daryl Sweeney",
+ title: "Chief Executive Officer",
+ phone: "(555) 924-9726",
+ managerId: null,
+ expanded: true,
+ employees: [
+ {
+ id: 2,
+ name: "Guy Wooten",
+ title: "Chief Technical Officer",
+ phone: "(438) 738-4935",
+ managerId: 1
+ }
+ ]
+ },
+ {
+ id: 32,
+ name: "Buffy Weber",
+ title: "VP, Engineering",
+ phone: "(699) 838-6121",
+ managerId: null
+ }
+];
+
+export default data;
diff --git a/vue-options-api-demos/treelist/globalization/data.js b/vue-options-api-demos/treelist/globalization/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/globalization/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/globalization/es.json b/vue-options-api-demos/treelist/globalization/es.json
new file mode 100644
index 00000000..77768d47
--- /dev/null
+++ b/vue-options-api-demos/treelist/globalization/es.json
@@ -0,0 +1,44 @@
+{
+ "datepicker": {
+ "toggleCalendar": "Alternar calendario"
+ },
+ "calendar": {
+ "today": "Hoy"
+ },
+ "dateinput": {
+ "increment": "Incrementar valor",
+ "decrement": "Disminuir valor"
+ },
+ "numerictextbox": {
+ "increment": "Incrementar valor",
+ "decrement": "Disminuir valor"
+ },
+ "treelist": {
+ "noRecords": "No hay datos disponibles.",
+ "filterEqOperator": "Es igual a",
+ "filterNotEqOperator": "No es igual a",
+ "filterIsNullOperator": "Es nulo",
+ "filterIsNotNullOperator": "No es nulo",
+ "filterIsEmptyOperator": "Está vacío",
+ "filterIsNotEmptyOperator": "No está vacío",
+ "filterStartsWithOperator": "Comienza con",
+ "filterContainsOperator": "Contiene",
+ "filterNotContainsOperator": "No contiene",
+ "filterEndsWithOperator": "Termina en",
+ "filterGteOperator": "Es mayor o igual que",
+ "filterGtOperator": "Es mayor que",
+ "filterLteOperator": "Es menor o igual que",
+ "filterLtOperator": "Es menor o igual que",
+ "filterIsTrue": "Sí",
+ "filterIsFalse": "No",
+ "filterBooleanAll": "(Todas)",
+ "filterAfterOrEqualOperator": "Es posterior o igual a",
+ "filterAfterOperator": "Es posterior",
+ "filterBeforeOperator": "Es anterior",
+ "filterBeforeOrEqualOperator": "Es anterior o igual a",
+ "filterFilterButton": "Filtrar",
+ "filterClearButton": "Limpiar filtros",
+ "filterAndLogic": "Y",
+ "filterOrLogic": "O"
+ }
+}
diff --git a/vue-options-api-demos/treelist/globalization/main.js b/vue-options-api-demos/treelist/globalization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/globalization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/globalization/main.vue b/vue-options-api-demos/treelist/globalization/main.vue
new file mode 100644
index 00000000..844af672
--- /dev/null
+++ b/vue-options-api-demos/treelist/globalization/main.vue
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/keyboard-navigation/data.js b/vue-options-api-demos/treelist/keyboard-navigation/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/keyboard-navigation/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/keyboard-navigation/main.js b/vue-options-api-demos/treelist/keyboard-navigation/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/keyboard-navigation/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/keyboard-navigation/main.vue b/vue-options-api-demos/treelist/keyboard-navigation/main.vue
new file mode 100644
index 00000000..6d92b799
--- /dev/null
+++ b/vue-options-api-demos/treelist/keyboard-navigation/main.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/locked/data.js b/vue-options-api-demos/treelist/locked/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/locked/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/locked/main.js b/vue-options-api-demos/treelist/locked/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/locked/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/locked/main.vue b/vue-options-api-demos/treelist/locked/main.vue
new file mode 100644
index 00000000..98818979
--- /dev/null
+++ b/vue-options-api-demos/treelist/locked/main.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/multi-column-headers/data.js b/vue-options-api-demos/treelist/multi-column-headers/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/multi-column-headers/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/multi-column-headers/main.js b/vue-options-api-demos/treelist/multi-column-headers/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/multi-column-headers/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/multi-column-headers/main.vue b/vue-options-api-demos/treelist/multi-column-headers/main.vue
new file mode 100644
index 00000000..de5c3f75
--- /dev/null
+++ b/vue-options-api-demos/treelist/multi-column-headers/main.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/overview/data.js b/vue-options-api-demos/treelist/overview/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/overview/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/overview/main.js b/vue-options-api-demos/treelist/overview/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/overview/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/overview/main.vue b/vue-options-api-demos/treelist/overview/main.vue
new file mode 100644
index 00000000..01b096e9
--- /dev/null
+++ b/vue-options-api-demos/treelist/overview/main.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/paging/main.js b/vue-options-api-demos/treelist/paging/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/paging/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/paging/main.vue b/vue-options-api-demos/treelist/paging/main.vue
new file mode 100644
index 00000000..bb948861
--- /dev/null
+++ b/vue-options-api-demos/treelist/paging/main.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/paging/treelist-data.js b/vue-options-api-demos/treelist/paging/treelist-data.js
new file mode 100644
index 00000000..c5ec456c
--- /dev/null
+++ b/vue-options-api-demos/treelist/paging/treelist-data.js
@@ -0,0 +1,26 @@
+export function generateData(numberOfColumns, columnWidth, numberOfRows, subItemsField) {
+ const columns = [];
+ for (let c = 1; c <= numberOfColumns; c++) {
+ columns.push({ field: 'Field-' + c.toString(), width: columnWidth });
+ }
+ columns[0].expandable = true;
+
+ const data = [];
+ const reducer = (acc, cur) => {
+ acc[cur[0]] = cur[0] !== 'id' ? 'Sub ' + cur[1] : cur[0];
+ return acc;
+ };
+
+ for (let r = 1; r <= numberOfRows; r++) {
+ const row = { id: r };
+ for (let c = 1; c <= numberOfColumns; c++) {
+ row['Field-' + c] = 'R' + r + ':C' + c;
+ }
+
+ const subItem = Object.entries(row).reduce(reducer, {});
+ row[subItemsField] = [subItem, { ...subItem }, { ...subItem }];
+ data.push(row);
+ }
+
+ return { columns, data };
+}
diff --git a/vue-options-api-demos/treelist/pdf/all-data-expanded/data.js b/vue-options-api-demos/treelist/pdf/all-data-expanded/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/pdf/all-data-expanded/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/pdf/all-data-expanded/main.js b/vue-options-api-demos/treelist/pdf/all-data-expanded/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/pdf/all-data-expanded/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/pdf/all-data-expanded/main.vue b/vue-options-api-demos/treelist/pdf/all-data-expanded/main.vue
new file mode 100644
index 00000000..62196fd1
--- /dev/null
+++ b/vue-options-api-demos/treelist/pdf/all-data-expanded/main.vue
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+ Export All TreeList Data To PDF
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/pdf/basic/data.js b/vue-options-api-demos/treelist/pdf/basic/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/pdf/basic/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/pdf/basic/main.js b/vue-options-api-demos/treelist/pdf/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/pdf/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/pdf/basic/main.vue b/vue-options-api-demos/treelist/pdf/basic/main.vue
new file mode 100644
index 00000000..bf299a58
--- /dev/null
+++ b/vue-options-api-demos/treelist/pdf/basic/main.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+ Export Data To PDF
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/treelist/pdf/columns-modification/data.js b/vue-options-api-demos/treelist/pdf/columns-modification/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/pdf/columns-modification/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/pdf/columns-modification/main.js b/vue-options-api-demos/treelist/pdf/columns-modification/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/pdf/columns-modification/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/pdf/columns-modification/main.vue b/vue-options-api-demos/treelist/pdf/columns-modification/main.vue
new file mode 100644
index 00000000..19a68f0a
--- /dev/null
+++ b/vue-options-api-demos/treelist/pdf/columns-modification/main.vue
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+ Export the Data from Specific Columns To PDF
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/reordering/data.js b/vue-options-api-demos/treelist/reordering/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/reordering/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/reordering/main.js b/vue-options-api-demos/treelist/reordering/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/reordering/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/reordering/main.vue b/vue-options-api-demos/treelist/reordering/main.vue
new file mode 100644
index 00000000..359914d3
--- /dev/null
+++ b/vue-options-api-demos/treelist/reordering/main.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/treelist/resizing/data.js b/vue-options-api-demos/treelist/resizing/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/resizing/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/resizing/main.js b/vue-options-api-demos/treelist/resizing/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/resizing/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/resizing/main.vue b/vue-options-api-demos/treelist/resizing/main.vue
new file mode 100644
index 00000000..e4c8d3a3
--- /dev/null
+++ b/vue-options-api-demos/treelist/resizing/main.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/treelist/selection-basic/data.js b/vue-options-api-demos/treelist/selection-basic/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/selection-basic/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/selection-basic/main.js b/vue-options-api-demos/treelist/selection-basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/selection-basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/selection-basic/main.vue b/vue-options-api-demos/treelist/selection-basic/main.vue
new file mode 100644
index 00000000..6c683fd6
--- /dev/null
+++ b/vue-options-api-demos/treelist/selection-basic/main.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/shared/data.js b/vue-options-api-demos/treelist/shared/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/shared/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/shared/flat-data.js b/vue-options-api-demos/treelist/shared/flat-data.js
new file mode 100644
index 00000000..6ca1dc52
--- /dev/null
+++ b/vue-options-api-demos/treelist/shared/flat-data.js
@@ -0,0 +1,1093 @@
+const employeesFlat = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2
+ },
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3
+ },
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2
+ },
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0
+ },
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4
+ },
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4
+ },
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6
+ },
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6
+ },
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ },
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ },
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ },
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+ },
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1
+ },
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4
+ },
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0
+ },
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2
+ },
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+];
+
+export default employeesFlat;
diff --git a/vue-options-api-demos/treelist/shared/pager.tsx b/vue-options-api-demos/treelist/shared/pager.tsx
new file mode 100644
index 00000000..c6673be3
--- /dev/null
+++ b/vue-options-api-demos/treelist/shared/pager.tsx
@@ -0,0 +1,14 @@
+
+import { Pager, PagerProps } from '@progress/kendo-vue-data-tools';
+
+export const TreeListPager = (props: PagerProps) => {
+ return (
+
+ );
+}
diff --git a/vue-options-api-demos/treelist/shared/simple-data.js b/vue-options-api-demos/treelist/shared/simple-data.js
new file mode 100644
index 00000000..b35aca00
--- /dev/null
+++ b/vue-options-api-demos/treelist/shared/simple-data.js
@@ -0,0 +1,28 @@
+const data = [
+ {
+ id: 1,
+ name: "Daryl Sweeney",
+ title: "Chief Executive Officer",
+ phone: "(555) 924-9726",
+ managerId: null,
+ expanded: true,
+ employees: [
+ {
+ id: 2,
+ name: "Guy Wooten",
+ title: "Chief Technical Officer",
+ phone: "(438) 738-4935",
+ managerId: 1
+ }
+ ]
+ },
+ {
+ id: 32,
+ name: "Buffy Weber",
+ title: "VP, Engineering",
+ phone: "(699) 838-6121",
+ managerId: null
+ }
+];
+
+export default data;
diff --git a/vue-options-api-demos/treelist/shared/treelist-data.js b/vue-options-api-demos/treelist/shared/treelist-data.js
new file mode 100644
index 00000000..c5ec456c
--- /dev/null
+++ b/vue-options-api-demos/treelist/shared/treelist-data.js
@@ -0,0 +1,26 @@
+export function generateData(numberOfColumns, columnWidth, numberOfRows, subItemsField) {
+ const columns = [];
+ for (let c = 1; c <= numberOfColumns; c++) {
+ columns.push({ field: 'Field-' + c.toString(), width: columnWidth });
+ }
+ columns[0].expandable = true;
+
+ const data = [];
+ const reducer = (acc, cur) => {
+ acc[cur[0]] = cur[0] !== 'id' ? 'Sub ' + cur[1] : cur[0];
+ return acc;
+ };
+
+ for (let r = 1; r <= numberOfRows; r++) {
+ const row = { id: r };
+ for (let c = 1; c <= numberOfColumns; c++) {
+ row['Field-' + c] = 'R' + r + ':C' + c;
+ }
+
+ const subItem = Object.entries(row).reduce(reducer, {});
+ row[subItemsField] = [subItem, { ...subItem }, { ...subItem }];
+ data.push(row);
+ }
+
+ return { columns, data };
+}
diff --git a/vue-options-api-demos/treelist/sorting-basic/data.js b/vue-options-api-demos/treelist/sorting-basic/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/sorting-basic/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/sorting-basic/main.js b/vue-options-api-demos/treelist/sorting-basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/sorting-basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/sorting-basic/main.vue b/vue-options-api-demos/treelist/sorting-basic/main.vue
new file mode 100644
index 00000000..d8693252
--- /dev/null
+++ b/vue-options-api-demos/treelist/sorting-basic/main.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/sorting-customization/data.js b/vue-options-api-demos/treelist/sorting-customization/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/sorting-customization/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/sorting-customization/main.js b/vue-options-api-demos/treelist/sorting-customization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/sorting-customization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/sorting-customization/main.vue b/vue-options-api-demos/treelist/sorting-customization/main.vue
new file mode 100644
index 00000000..faa8bb9b
--- /dev/null
+++ b/vue-options-api-demos/treelist/sorting-customization/main.vue
@@ -0,0 +1,129 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/toolbar/data.js b/vue-options-api-demos/treelist/toolbar/data.js
new file mode 100644
index 00000000..f66aec4d
--- /dev/null
+++ b/vue-options-api-demos/treelist/toolbar/data.js
@@ -0,0 +1,1150 @@
+
+const employees = [
+ {
+ "id": 1,
+ "name": "Daryl Sweeney",
+ "reportsTo": null,
+ "phone": "(555) 924-9726",
+ "extension": 8253,
+ "hireDate": new Date(2012, 2, 7),
+ "fullTime": true,
+ "position": "CEO",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 2,
+ "name": "Guy Wooten",
+ "reportsTo": 1,
+ "phone": "(438) 738-4935",
+ "extension": 1155,
+ "hireDate": new Date(2010, 3, 3),
+ "fullTime": true,
+ "position": "Chief Technical Officer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 32,
+ "name": "Buffy Weber",
+ "reportsTo": 2,
+ "phone": "(699) 838-6121",
+ "extension": 8933,
+ "hireDate": new Date(2011, 7, 11),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 11,
+ "name": "Hyacinth Hood",
+ "reportsTo": 32,
+ "phone": "(889) 345-2438",
+ "extension": 8564,
+ "hireDate": new Date(2014, 2, 3),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 60,
+ "name": "Akeem Carr",
+ "reportsTo": 11,
+ "phone": "(738) 136-2814",
+ "extension": 9353,
+ "hireDate": new Date(2011, 4, 21),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 78,
+ "name": "Rinah Simon",
+ "reportsTo": 11,
+ "phone": "(285) 912-5271",
+ "extension": 7795,
+ "hireDate": new Date(2012, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 42,
+ "name": "Gage Daniels",
+ "reportsTo": 32,
+ "phone": "(107) 290-6260",
+ "extension": 896,
+ "hireDate": new Date(2013, 5, 16),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 5
+ },
+ {
+ "id": 43,
+ "name": "Constance Vazquez",
+ "reportsTo": 32,
+ "phone": "(800) 301-1978",
+ "extension": 5141,
+ "hireDate": new Date(2011, 6, 7),
+ "fullTime": true,
+ "position": "Director, Engineering",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 46,
+ "name": "Darrel Solis",
+ "reportsTo": 43,
+ "phone": "(327) 977-0216",
+ "extension": 7779,
+ "hireDate": new Date(2015, 4, 25),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 47,
+ "name": "Brian Yang",
+ "reportsTo": 46,
+ "phone": "(565) 146-5435",
+ "extension": 3885,
+ "hireDate": new Date(2012, 9, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 50,
+ "name": "Lillian Bradshaw",
+ "reportsTo": 46,
+ "phone": "(323) 509-3479",
+ "extension": 5426,
+ "hireDate": new Date(2014, 5, 10),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 51,
+ "name": "Christian Palmer",
+ "reportsTo": 46,
+ "phone": "(490) 421-8718",
+ "extension": 3706,
+ "hireDate": new Date(2012, 12, 27),
+ "fullTime": false,
+ "position": "Technical Lead",
+ "timeInPosition": 1
+ },
+ {
+ "id": 55,
+ "name": "Summer Mosley",
+ "reportsTo": 46,
+ "phone": "(784) 962-2301",
+ "extension": 5492,
+ "hireDate": new Date(2010, 3, 2),
+ "fullTime": true,
+ "position": "QA Engineer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 56,
+ "name": "Barry Ayers",
+ "reportsTo": 46,
+ "phone": "(452) 373-9227",
+ "extension": 1308,
+ "hireDate": new Date(2011, 10, 11),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 59,
+ "name": "Keiko Espinoza",
+ "reportsTo": 46,
+ "phone": "(226) 600-5305",
+ "extension": 9363,
+ "hireDate": new Date(2011, 9, 18),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 61,
+ "name": "Candace Pickett",
+ "reportsTo": 46,
+ "phone": "(120) 117-7475",
+ "extension": 5178,
+ "hireDate": new Date(2010, 5, 6),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 63,
+ "name": "Mia Caldwell",
+ "reportsTo": 43,
+ "phone": "(848) 636-6470",
+ "extension": 6368,
+ "hireDate": new Date(2012, 10, 7),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 65,
+ "name": "Thomas Terry",
+ "reportsTo": 63,
+ "phone": "(764) 831-4248",
+ "extension": 3574,
+ "hireDate": new Date(2015, 6, 15),
+ "fullTime": false,
+ "position": "Senior Enterprise Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 67,
+ "name": "Ruth Downs",
+ "reportsTo": 63,
+ "phone": "(138) 991-1440",
+ "extension": 8067,
+ "hireDate": new Date(2013, 7, 13),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 70,
+ "name": "Yasir Wilder",
+ "reportsTo": 63,
+ "phone": "(759) 701-8665",
+ "extension": 8350,
+ "hireDate": new Date(2010, 11, 8),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 3
+ },
+ {
+ "id": 71,
+ "name": "Flavia Short",
+ "reportsTo": 63,
+ "phone": "(370) 133-9238",
+ "extension": 6390,
+ "hireDate": new Date(2013, 2, 21),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 74,
+ "name": "Aaron Roach",
+ "reportsTo": 63,
+ "phone": "(958) 717-9230",
+ "extension": 4899,
+ "hireDate": new Date(2011, 7, 30),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 75,
+ "name": "Eric Russell",
+ "reportsTo": 63,
+ "phone": "(516) 575-8505",
+ "extension": 2224,
+ "hireDate": new Date(2012, 10, 28),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 76,
+ "name": "Cheyenne Olson",
+ "reportsTo": 63,
+ "phone": "(241) 645-0257",
+ "extension": 9181,
+ "hireDate": new Date(2015, 5, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 77,
+ "name": "Shaine Avila",
+ "reportsTo": 63,
+ "phone": "(844) 435-1360",
+ "extension": 3374,
+ "hireDate": new Date(2010, 1, 31),
+ "fullTime": true,
+ "position": "UI Designer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 81,
+ "name": "Chantale Long",
+ "reportsTo": 63,
+ "phone": "(252) 419-6891",
+ "extension": 7868,
+ "hireDate": new Date(2010, 6, 17),
+ "fullTime": true,
+ "position": "Senior QA Enginner",
+ "timeInPosition": 1
+ },
+ {
+ "id": 83,
+ "name": "Dane Cruz",
+ "reportsTo": 63,
+ "phone": "(946) 701-6165",
+ "extension": 3828,
+ "hireDate": new Date(2014, 10, 8),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 84,
+ "name": "Regan Patterson",
+ "reportsTo": 63,
+ "phone": "(265) 946-1765",
+ "extension": 6955,
+ "hireDate": new Date(2012, 3, 1),
+ "fullTime": true,
+ "position": "Technical Writer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 85,
+ "name": "Drew Mckay",
+ "reportsTo": 63,
+ "phone": "(327) 293-0162",
+ "extension": 6904,
+ "hireDate": new Date(2011, 3, 25),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 88,
+ "name": "Bevis Miller",
+ "reportsTo": 63,
+ "phone": "(525) 557-0169",
+ "extension": 6978,
+ "hireDate": new Date(2011, 4, 19),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 89,
+ "name": "Bruce Mccarty",
+ "reportsTo": 63,
+ "phone": "(936) 777-8730",
+ "extension": 6552,
+ "hireDate": new Date(2014, 3, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 5
+ }
+ ]
+ },
+ {
+ "id": 90,
+ "name": "Ocean Blair",
+ "reportsTo": 43,
+ "phone": "(343) 586-6614",
+ "extension": 1424,
+ "hireDate": new Date(2011, 4, 27),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 91,
+ "name": "Guinevere Osborn",
+ "reportsTo": 90,
+ "phone": "(424) 741-0006",
+ "extension": 3166,
+ "hireDate": new Date(2014, 11, 19),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 92,
+ "name": "Olga Strong",
+ "reportsTo": 90,
+ "phone": "(949) 417-1168",
+ "extension": 4568,
+ "hireDate": new Date(2015, 5, 28),
+ "fullTime": true,
+ "position": "Graphic Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 93,
+ "name": "Robert Orr",
+ "reportsTo": 90,
+ "phone": "(977) 341-3721",
+ "extension": 9241,
+ "hireDate": new Date(2012, 8, 20),
+ "fullTime": false,
+ "position": "Support Officer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 95,
+ "name": "Odette Sears",
+ "reportsTo": 90,
+ "phone": "(264) 818-6576",
+ "extension": 1914,
+ "hireDate": new Date(2013, 7, 5),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 45,
+ "name": "Zelda Medina",
+ "reportsTo": 32,
+ "phone": "(563) 359-6023",
+ "extension": 2600,
+ "hireDate": new Date(2012, 11, 6),
+ "fullTime": true,
+ "position": "QA Architect",
+ "timeInPosition": 2
+ }
+ ]
+ },
+ {
+ "id": 52,
+ "name": "Skyler Cleveland",
+ "reportsTo": 2,
+ "phone": "(217) 280-5300",
+ "extension": 9655,
+ "hireDate": new Date(2014, 11, 10),
+ "fullTime": true,
+ "position": "VP, Engineering",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 40,
+ "name": "Karleigh Garza",
+ "reportsTo": 52,
+ "phone": "(370) 983-8796",
+ "extension": 4044,
+ "hireDate": new Date(2014, 3, 10),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 49,
+ "name": "Elmo Tyson",
+ "reportsTo": 40,
+ "phone": "(344) 496-9555",
+ "extension": 6950,
+ "hireDate": new Date(2014, 9, 18),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 72,
+ "name": "Stacey Lynn",
+ "reportsTo": 40,
+ "phone": "(140) 772-7509",
+ "extension": 8396,
+ "hireDate": new Date(2014, 7, 31),
+ "fullTime": false,
+ "position": "QA Engineer",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 80,
+ "name": "Meredith Parrish",
+ "reportsTo": 72,
+ "phone": "(714) 284-2408",
+ "extension": 7675,
+ "hireDate": new Date(2012, 11, 13),
+ "fullTime": true,
+ "position": "Junior QA Engineer",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 96,
+ "name": "Cassady Whitley",
+ "reportsTo": 40,
+ "phone": "(996) 587-8405",
+ "extension": 780,
+ "hireDate": new Date(2013, 5, 7),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 5
+ },
+ {
+ "id": 97,
+ "name": "Haviva Campbell",
+ "reportsTo": 40,
+ "phone": "(263) 887-4689",
+ "extension": 2808,
+ "hireDate": new Date(2013, 3, 5),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 2
+ },
+ {
+ "id": 98,
+ "name": "Cameron Ayers",
+ "reportsTo": 40,
+ "phone": "(470) 709-8030",
+ "extension": 2893,
+ "hireDate": new Date(2013, 8, 28),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 99,
+ "name": "Martha Sargent",
+ "reportsTo": 40,
+ "phone": "(587) 812-4418",
+ "extension": 5099,
+ "hireDate": new Date(2014, 2, 27),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 100,
+ "name": "Darrel Kinney",
+ "reportsTo": 40,
+ "phone": "(888) 483-9606",
+ "extension": 4779,
+ "hireDate": new Date(2014, 3, 24),
+ "fullTime": false,
+ "position": "Graphic Designer",
+ "timeInPosition": 1
+ }
+ ]
+ },
+ {
+ "id": 54,
+ "name": "Kuame Frye",
+ "reportsTo": 52,
+ "phone": "(360) 721-5886",
+ "extension": 2730,
+ "hireDate": new Date(2010, 11, 17),
+ "fullTime": true,
+ "position": "Software Architect",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 64,
+ "name": "Ori Wynn",
+ "reportsTo": 54,
+ "phone": "(366) 342-0166",
+ "extension": 7252,
+ "hireDate": new Date(2015, 6, 21),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 6,
+ "name": "Moses Duncan",
+ "reportsTo": 64,
+ "phone": "(421) 611-4814",
+ "extension": 669,
+ "hireDate": new Date(2010, 5, 24),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 12,
+ "name": "Jamalia Wallace",
+ "reportsTo": 64,
+ "phone": "(611) 391-8016",
+ "extension": 1952,
+ "hireDate": new Date(2011, 9, 8),
+ "fullTime": true,
+ "position": "Junior Designer",
+ "timeInPosition": 3
+ },
+ {
+ "id": 62,
+ "name": "Palmer Gregory",
+ "reportsTo": 64,
+ "phone": "(360) 430-2505",
+ "extension": 4337,
+ "hireDate": new Date(2014, 8, 30),
+ "fullTime": true,
+ "position": "Designer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 68,
+ "name": "Mallory Gilliam",
+ "reportsTo": 64,
+ "phone": "(878) 423-2971",
+ "extension": 1341,
+ "hireDate": new Date(2014, 7, 24),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 73,
+ "name": "Ima Hughes",
+ "reportsTo": 64,
+ "phone": "(905) 485-8001",
+ "extension": 1273,
+ "hireDate": new Date(2013, 6, 3),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ },
+ {
+ "id": 79,
+ "name": "Duncan Mathews",
+ "reportsTo": 64,
+ "phone": "(790) 971-9709",
+ "extension": 4573,
+ "hireDate": new Date(2011, 8, 21),
+ "fullTime": false,
+ "position": "Software Developer",
+ "timeInPosition": 3
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 69,
+ "name": "Sierra Beasley",
+ "reportsTo": 52,
+ "phone": "(271) 953-1968",
+ "extension": 3324,
+ "hireDate": new Date(2011, 4, 2),
+ "fullTime": true,
+ "position": "Team Lead",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 38,
+ "name": "Elton Tucker",
+ "reportsTo": 69,
+ "phone": "(988) 930-9331",
+ "extension": 9216,
+ "hireDate": new Date(2015, 6, 4),
+ "fullTime": true,
+ "position": "Support Officer",
+ "timeInPosition": 1
+ },
+ {
+ "id": 39,
+ "name": "Iona Brennan",
+ "reportsTo": 69,
+ "phone": "(356) 563-0600",
+ "extension": 5634,
+ "hireDate": new Date(2010, 9, 23),
+ "fullTime": true,
+ "position": "Junior Support Officer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 53,
+ "name": "Paul Campos",
+ "reportsTo": 69,
+ "phone": "(899) 205-1689",
+ "extension": 8586,
+ "hireDate": new Date(2011, 3, 17),
+ "fullTime": true,
+ "position": "Interaction Designer",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 66,
+ "name": "Gloria Freeman",
+ "reportsTo": 53,
+ "phone": "(344) 950-9168",
+ "extension": 4738,
+ "hireDate": new Date(2013, 5, 6),
+ "fullTime": true,
+ "position": "Junior Interaction Designer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 57,
+ "name": "Alyssa Hansen",
+ "reportsTo": 69,
+ "phone": "(548) 925-4799",
+ "extension": 4716,
+ "hireDate": new Date(2011, 1, 19),
+ "fullTime": true,
+ "position": "Junior Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 82,
+ "name": "Yael Walters",
+ "reportsTo": 69,
+ "phone": "(311) 489-8191",
+ "extension": 6520,
+ "hireDate": new Date(2013, 7, 4),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 6
+ },
+ {
+ "id": 87,
+ "name": "Dahlia Hunt",
+ "reportsTo": 69,
+ "phone": "(720) 339-5202",
+ "extension": 3690,
+ "hireDate": new Date(2011, 3, 26),
+ "fullTime": true,
+ "position": "Senior Software Developer",
+ "timeInPosition": 4
+ },
+ {
+ "id": 94,
+ "name": "Adria Stanley",
+ "reportsTo": 69,
+ "phone": "(536) 357-6391",
+ "extension": 3374,
+ "hireDate": new Date(2014, 7, 26),
+ "fullTime": true,
+ "position": "Software Developer",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "name": "Priscilla Frank",
+ "reportsTo": 1,
+ "phone": "(278) 927-2684",
+ "extension": 4183,
+ "hireDate": new Date(2014, 11, 30),
+ "fullTime": true,
+ "position": "Chief Product Officer",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 4,
+ "name": "Ursula Holmes",
+ "reportsTo": 3,
+ "phone": "(302) 760-2034",
+ "extension": 2226,
+ "hireDate": new Date(2011, 6, 6),
+ "fullTime": true,
+ "position": "EVP, Product Strategy",
+ "timeInPosition": 4
+ },
+ {
+ "id": 24,
+ "name": "Melvin Carrillo",
+ "reportsTo": 3,
+ "phone": "(348) 933-5167",
+ "extension": 2482,
+ "hireDate": new Date(2014, 7, 21),
+ "fullTime": true,
+ "position": "Director, Developer Relations",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 29,
+ "name": "Martha Chavez",
+ "reportsTo": 24,
+ "phone": "(860) 754-3464",
+ "extension": 4531,
+ "hireDate": new Date(2013, 3, 12),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 30,
+ "name": "Oren Fox",
+ "reportsTo": 24,
+ "phone": "(572) 414-3299",
+ "extension": 4849,
+ "hireDate": new Date(2013, 5, 14),
+ "fullTime": false,
+ "position": "Developer Advocate",
+ "timeInPosition": 0
+ },
+ {
+ "id": 41,
+ "name": "Amos Barr",
+ "reportsTo": 24,
+ "phone": "(470) 381-3718",
+ "extension": 7643,
+ "hireDate": new Date(2010, 3, 9),
+ "fullTime": true,
+ "position": "Developer Advocate",
+ "timeInPosition": 2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "name": "Anika Vega",
+ "reportsTo": 1,
+ "phone": "(910) 714-1802",
+ "extension": 6353,
+ "hireDate": new Date(2010, 2, 25),
+ "fullTime": true,
+ "position": "Chief Process Officer",
+ "timeInPosition": 5,
+ "employees": [
+ {
+ "id": 10,
+ "name": "Vernon Ballard",
+ "reportsTo": 5,
+ "phone": "(702) 185-8890",
+ "extension": 9242,
+ "hireDate": new Date(2015, 6, 26),
+ "fullTime": true,
+ "position": "Director Facilities",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 16,
+ "name": "Ali Guy",
+ "reportsTo": 10,
+ "phone": "(429) 912-6578",
+ "extension": 2225,
+ "hireDate": new Date(2014, 6, 29),
+ "fullTime": true,
+ "position": "Operations Manager",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 23,
+ "name": "Bruce Reilly",
+ "reportsTo": 16,
+ "phone": "(995) 243-7302",
+ "extension": 4815,
+ "hireDate": new Date(2015, 4, 1),
+ "fullTime": true,
+ "position": "Head of Security",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 26,
+ "name": "Rowan Morin",
+ "reportsTo": 23,
+ "phone": "(792) 141-4374",
+ "extension": 1844,
+ "hireDate": new Date(2015, 7, 30),
+ "fullTime": true,
+ "position": "Building Security",
+ "timeInPosition": 5
+ },
+ {
+ "id": 44,
+ "name": "Benedict Soto",
+ "reportsTo": 23,
+ "phone": "(822) 282-5991",
+ "extension": 6422,
+ "hireDate": new Date(2012, 6, 1),
+ "fullTime": false,
+ "position": "Building Security",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 48,
+ "name": "Maryam Rios",
+ "reportsTo": 16,
+ "phone": "(673) 764-6720",
+ "extension": 531,
+ "hireDate": new Date(2014, 3, 3),
+ "fullTime": true,
+ "position": "Team Lead, Personal Assistants",
+ "timeInPosition": 1,
+ "employees": [
+ {
+ "id": 58,
+ "name": "Rose Mcintyre",
+ "reportsTo": 48,
+ "phone": "(771) 615-4590",
+ "extension": 7094,
+ "hireDate": new Date(2015, 6, 30),
+ "fullTime": false,
+ "position": "Personal Assistant",
+ "timeInPosition": 6
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "name": "Nevada Hart",
+ "reportsTo": 1,
+ "phone": "(254) 220-1576",
+ "extension": 6649,
+ "hireDate": new Date(2015, 8, 17),
+ "fullTime": true,
+ "position": "Chief Financial Officer",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 14,
+ "name": "Zena Sanford",
+ "reportsTo": 7,
+ "phone": "(437) 568-8160",
+ "extension": 4452,
+ "hireDate": new Date(2010, 11, 30),
+ "fullTime": true,
+ "position": "VP, Finance",
+ "timeInPosition": 4
+ },
+ {
+ "id": 15,
+ "name": "Quinlan Howe",
+ "reportsTo": 7,
+ "phone": "(464) 334-9748",
+ "extension": 8722,
+ "hireDate": new Date(2011, 6, 9),
+ "fullTime": false,
+ "position": "Senior Director, Finance",
+ "timeInPosition": 0,
+ "employees": [
+ {
+ "id": 17,
+ "name": "Indira Lopez",
+ "reportsTo": 15,
+ "phone": "(301) 368-0938",
+ "extension": 8027,
+ "hireDate": new Date(2013, 8, 18),
+ "fullTime": true,
+ "position": "ERP Team Lead",
+ "timeInPosition": 4,
+ "employees": [
+ {
+ "id": 18,
+ "name": "Lareina Lara",
+ "reportsTo": 17,
+ "phone": "(233) 457-7482",
+ "extension": 1996,
+ "hireDate": new Date(2010, 4, 30),
+ "fullTime": true,
+ "position": "ERP Solutions Consultant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 19,
+ "name": "Maxwell Wise",
+ "reportsTo": 17,
+ "phone": "(570) 494-2531",
+ "extension": 9865,
+ "hireDate": new Date(2012, 5, 19),
+ "fullTime": true,
+ "position": "Systems Engineer",
+ "timeInPosition": 0
+ }
+ ]
+ },
+ {
+ "id": 20,
+ "name": "Hunter Mcbride",
+ "reportsTo": 15,
+ "phone": "(409) 442-7016",
+ "extension": 4284,
+ "hireDate": new Date(2012, 10, 20),
+ "fullTime": true,
+ "position": "Senior Director, Tax",
+ "timeInPosition": 3
+ },
+ {
+ "id": 21,
+ "name": "Jana Serrano",
+ "reportsTo": 15,
+ "phone": "(910) 718-4620",
+ "extension": 6970,
+ "hireDate": new Date(2010, 4, 2),
+ "fullTime": true,
+ "position": "Financial Planning & Analysis Manager",
+ "timeInPosition": 2
+ },
+ {
+ "id": 22,
+ "name": "Zachery Shelton",
+ "reportsTo": 15,
+ "phone": "(310) 240-8675",
+ "extension": 4527,
+ "hireDate": new Date(2011, 11, 23),
+ "fullTime": false,
+ "position": "Corporate Finance Controller",
+ "timeInPosition": 6,
+ "employees": [
+ {
+ "id": 28,
+ "name": "Cullen Freeman",
+ "reportsTo": 22,
+ "phone": "(136) 554-8814",
+ "extension": 9861,
+ "hireDate": new Date(2014, 3, 15),
+ "fullTime": true,
+ "position": "Treasurer Accountant",
+ "timeInPosition": 2
+ },
+ {
+ "id": 31,
+ "name": "Quinn Dean",
+ "reportsTo": 22,
+ "phone": "(152) 613-3507",
+ "extension": 6621,
+ "hireDate": new Date(2015, 1, 29),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 6
+ },
+ {
+ "id": 34,
+ "name": "Samantha Brady",
+ "reportsTo": 22,
+ "phone": "(206) 398-4328",
+ "extension": 1157,
+ "hireDate": new Date(2011, 2, 13),
+ "fullTime": true,
+ "position": "Accountant",
+ "timeInPosition": 2,
+ "employees": [
+ {
+ "id": 35,
+ "name": "Tamara Green",
+ "reportsTo": 34,
+ "phone": "(219) 248-2789",
+ "extension": 4880,
+ "hireDate": new Date(2014, 2, 4),
+ "fullTime": true,
+ "position": "Junior Accountant",
+ "timeInPosition": 6
+ }
+ ]
+ },
+ {
+ "id": 36,
+ "name": "Olympia Coleman",
+ "reportsTo": 22,
+ "phone": "(944) 853-6383",
+ "extension": 2136,
+ "hireDate": new Date(2013, 7, 31),
+ "fullTime": true,
+ "position": "Collections Manager",
+ "timeInPosition": 3
+ },
+ {
+ "id": 37,
+ "name": "Breanna Goodwin",
+ "reportsTo": 22,
+ "phone": "(379) 988-9630",
+ "extension": 5898,
+ "hireDate": new Date(2010, 5, 23),
+ "fullTime": false,
+ "position": "Payroll Specialist",
+ "timeInPosition": 4
+ }
+ ]
+ },
+ {
+ "id": 27,
+ "name": "Curran Travis",
+ "reportsTo": 15,
+ "phone": "(438) 135-8033",
+ "extension": 3841,
+ "hireDate": new Date(2011, 6, 13),
+ "fullTime": true,
+ "position": "Finance Controller",
+ "timeInPosition": 5
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "name": "Hunter Fry",
+ "reportsTo": 1,
+ "phone": "(766) 358-9858",
+ "extension": 3741,
+ "hireDate": new Date(2011, 2, 12),
+ "fullTime": false,
+ "position": "General Counsel",
+ "timeInPosition": 3,
+ "employees": [
+ {
+ "id": 9,
+ "name": "Kuame Carrillo",
+ "reportsTo": 8,
+ "phone": "(192) 383-1305",
+ "extension": 9228,
+ "hireDate": new Date(2011, 2, 22),
+ "fullTime": true,
+ "position": "Associate General Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 13,
+ "name": "Stacy Todd",
+ "reportsTo": 8,
+ "phone": "(925) 286-3327",
+ "extension": 8565,
+ "hireDate": new Date(2014, 7, 5),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 0
+ },
+ {
+ "id": 33,
+ "name": "Valentine Wyatt",
+ "reportsTo": 8,
+ "phone": "(165) 166-6205",
+ "extension": 3588,
+ "hireDate": new Date(2015, 5, 21),
+ "fullTime": true,
+ "position": "Councel",
+ "timeInPosition": 5
+ },
+ {
+ "id": 86,
+ "name": "Daniel Mccarthy",
+ "reportsTo": 8,
+ "phone": "(624) 483-6206",
+ "extension": 9112,
+ "hireDate": new Date(2013, 12, 3),
+ "fullTime": false,
+ "position": "Staff Attorney",
+ "timeInPosition": 0
+ }
+ ]
+ }
+ ]
+ }
+];
+
+export default employees;
diff --git a/vue-options-api-demos/treelist/toolbar/main.js b/vue-options-api-demos/treelist/toolbar/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/toolbar/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/toolbar/main.vue b/vue-options-api-demos/treelist/toolbar/main.vue
new file mode 100644
index 00000000..7245f4b7
--- /dev/null
+++ b/vue-options-api-demos/treelist/toolbar/main.vue
@@ -0,0 +1,126 @@
+
+
+
+
+ Choose a file name:
+
+
+
+ Export Excel
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/virtual-scroll/main.js b/vue-options-api-demos/treelist/virtual-scroll/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treelist/virtual-scroll/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treelist/virtual-scroll/main.vue b/vue-options-api-demos/treelist/virtual-scroll/main.vue
new file mode 100644
index 00000000..eea94b04
--- /dev/null
+++ b/vue-options-api-demos/treelist/virtual-scroll/main.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treelist/virtual-scroll/treelist-data.js b/vue-options-api-demos/treelist/virtual-scroll/treelist-data.js
new file mode 100644
index 00000000..c5ec456c
--- /dev/null
+++ b/vue-options-api-demos/treelist/virtual-scroll/treelist-data.js
@@ -0,0 +1,26 @@
+export function generateData(numberOfColumns, columnWidth, numberOfRows, subItemsField) {
+ const columns = [];
+ for (let c = 1; c <= numberOfColumns; c++) {
+ columns.push({ field: 'Field-' + c.toString(), width: columnWidth });
+ }
+ columns[0].expandable = true;
+
+ const data = [];
+ const reducer = (acc, cur) => {
+ acc[cur[0]] = cur[0] !== 'id' ? 'Sub ' + cur[1] : cur[0];
+ return acc;
+ };
+
+ for (let r = 1; r <= numberOfRows; r++) {
+ const row = { id: r };
+ for (let c = 1; c <= numberOfColumns; c++) {
+ row['Field-' + c] = 'R' + r + ':C' + c;
+ }
+
+ const subItem = Object.entries(row).reduce(reducer, {});
+ row[subItemsField] = [subItem, { ...subItem }, { ...subItem }];
+ data.push(row);
+ }
+
+ return { columns, data };
+}
diff --git a/vue-options-api-demos/treeview/appearance/StyleConfigurator.vue b/vue-options-api-demos/treeview/appearance/StyleConfigurator.vue
new file mode 100644
index 00000000..aa2b048c
--- /dev/null
+++ b/vue-options-api-demos/treeview/appearance/StyleConfigurator.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/appearance/main.js b/vue-options-api-demos/treeview/appearance/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/appearance/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/appearance/main.vue b/vue-options-api-demos/treeview/appearance/main.vue
new file mode 100644
index 00000000..4f818459
--- /dev/null
+++ b/vue-options-api-demos/treeview/appearance/main.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.js b/vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.vue b/vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.vue
new file mode 100644
index 00000000..6b07ac25
--- /dev/null
+++ b/vue-options-api-demos/treeview/checkbox/checkbox-all-helper/main.vue
@@ -0,0 +1,113 @@
+
+
+
+
+ Check all
+
+
+ Uncheck all
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-all/main.js b/vue-options-api-demos/treeview/checkbox/checkbox-all/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/checkbox/checkbox-all/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-all/main.vue b/vue-options-api-demos/treeview/checkbox/checkbox-all/main.vue
new file mode 100644
index 00000000..ddfe1e65
--- /dev/null
+++ b/vue-options-api-demos/treeview/checkbox/checkbox-all/main.vue
@@ -0,0 +1,101 @@
+
+
+
+
+ Check all
+
+
+ Uncheck all
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.js b/vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.vue b/vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.vue
new file mode 100644
index 00000000..336120e4
--- /dev/null
+++ b/vue-options-api-demos/treeview/checkbox/checkbox-helper-multiple/main.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
Press SPACE to check/uncheck the active item
+
Checked IDs: {{ check.ids.join(',') }}
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.js b/vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.vue b/vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.vue
new file mode 100644
index 00000000..33679c39
--- /dev/null
+++ b/vue-options-api-demos/treeview/checkbox/checkbox-helper-single/main.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
Press SPACE to check/uncheck the active item
+
Checked IDs: {{ check.ids.join(',') }}
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-helper/main.js b/vue-options-api-demos/treeview/checkbox/checkbox-helper/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/checkbox/checkbox-helper/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/checkbox/checkbox-helper/main.vue b/vue-options-api-demos/treeview/checkbox/checkbox-helper/main.vue
new file mode 100644
index 00000000..a68b1d55
--- /dev/null
+++ b/vue-options-api-demos/treeview/checkbox/checkbox-helper/main.vue
@@ -0,0 +1,113 @@
+
+
+
+
Check Settings
+
+  
+
+  
+
+
+
+
+
Press SPACE to check/uncheck the active item
+
Checked IDs: {{ check.ids.join(',') }}
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/custom/main.js b/vue-options-api-demos/treeview/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/custom/main.vue b/vue-options-api-demos/treeview/custom/main.vue
new file mode 100644
index 00000000..6fee39f4
--- /dev/null
+++ b/vue-options-api-demos/treeview/custom/main.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+ {{ props.item.text }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/data-binding/basic/main.js b/vue-options-api-demos/treeview/data-binding/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/data-binding/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/data-binding/basic/main.vue b/vue-options-api-demos/treeview/data-binding/basic/main.vue
new file mode 100644
index 00000000..c0203515
--- /dev/null
+++ b/vue-options-api-demos/treeview/data-binding/basic/main.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/data-binding/item-fields/main.js b/vue-options-api-demos/treeview/data-binding/item-fields/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/data-binding/item-fields/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/data-binding/item-fields/main.vue b/vue-options-api-demos/treeview/data-binding/item-fields/main.vue
new file mode 100644
index 00000000..bacf50da
--- /dev/null
+++ b/vue-options-api-demos/treeview/data-binding/item-fields/main.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/data-binding/remote-data/main.js b/vue-options-api-demos/treeview/data-binding/remote-data/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/data-binding/remote-data/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/data-binding/remote-data/main.vue b/vue-options-api-demos/treeview/data-binding/remote-data/main.vue
new file mode 100644
index 00000000..3c7589f6
--- /dev/null
+++ b/vue-options-api-demos/treeview/data-binding/remote-data/main.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/data-reload/main.js b/vue-options-api-demos/treeview/data-reload/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/data-reload/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/data-reload/main.vue b/vue-options-api-demos/treeview/data-reload/main.vue
new file mode 100644
index 00000000..95853129
--- /dev/null
+++ b/vue-options-api-demos/treeview/data-reload/main.vue
@@ -0,0 +1,12 @@
+
+
+Vue Component
+
+
+
+
diff --git a/vue-options-api-demos/treeview/drag/multiple/main.js b/vue-options-api-demos/treeview/drag/multiple/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/drag/multiple/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/drag/multiple/main.vue b/vue-options-api-demos/treeview/drag/multiple/main.vue
new file mode 100644
index 00000000..eef742b2
--- /dev/null
+++ b/vue-options-api-demos/treeview/drag/multiple/main.vue
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/drag/single/main.js b/vue-options-api-demos/treeview/drag/single/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/drag/single/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/drag/single/main.vue b/vue-options-api-demos/treeview/drag/single/main.vue
new file mode 100644
index 00000000..4ed58adf
--- /dev/null
+++ b/vue-options-api-demos/treeview/drag/single/main.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/events/drag/Logger.vue b/vue-options-api-demos/treeview/events/drag/Logger.vue
new file mode 100644
index 00000000..7d9e1695
--- /dev/null
+++ b/vue-options-api-demos/treeview/events/drag/Logger.vue
@@ -0,0 +1,45 @@
+
+
+
{{ title }}
+
+
+ {{ events.length - idx }}. {{ event }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/events/drag/main.js b/vue-options-api-demos/treeview/events/drag/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/events/drag/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/events/drag/main.vue b/vue-options-api-demos/treeview/events/drag/main.vue
new file mode 100644
index 00000000..a4ff0afa
--- /dev/null
+++ b/vue-options-api-demos/treeview/events/drag/main.vue
@@ -0,0 +1,190 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/events/select-check/Logger.vue b/vue-options-api-demos/treeview/events/select-check/Logger.vue
new file mode 100644
index 00000000..7d9e1695
--- /dev/null
+++ b/vue-options-api-demos/treeview/events/select-check/Logger.vue
@@ -0,0 +1,45 @@
+
+
+
{{ title }}
+
+
+ {{ events.length - idx }}. {{ event }}
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/events/select-check/main.js b/vue-options-api-demos/treeview/events/select-check/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/events/select-check/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/events/select-check/main.vue b/vue-options-api-demos/treeview/events/select-check/main.vue
new file mode 100644
index 00000000..e0449fe0
--- /dev/null
+++ b/vue-options-api-demos/treeview/events/select-check/main.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.js b/vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.vue b/vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.vue
new file mode 100644
index 00000000..835b8e34
--- /dev/null
+++ b/vue-options-api-demos/treeview/expand/custom-items-expanded-helper-function/main.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/expand/items-expanded-all/main.js b/vue-options-api-demos/treeview/expand/items-expanded-all/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/expand/items-expanded-all/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/expand/items-expanded-all/main.vue b/vue-options-api-demos/treeview/expand/items-expanded-all/main.vue
new file mode 100644
index 00000000..cd8f941d
--- /dev/null
+++ b/vue-options-api-demos/treeview/expand/items-expanded-all/main.vue
@@ -0,0 +1,132 @@
+
+
+
+
+ Expand all
+
+
+ Collapse all
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/expand/items-expanded-directly/main.js b/vue-options-api-demos/treeview/expand/items-expanded-directly/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/expand/items-expanded-directly/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/expand/items-expanded-directly/main.vue b/vue-options-api-demos/treeview/expand/items-expanded-directly/main.vue
new file mode 100644
index 00000000..68e84347
--- /dev/null
+++ b/vue-options-api-demos/treeview/expand/items-expanded-directly/main.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.js b/vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.vue b/vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.vue
new file mode 100644
index 00000000..27c3ce05
--- /dev/null
+++ b/vue-options-api-demos/treeview/expand/items-expanded-helper-function/main.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/get-started/main.js b/vue-options-api-demos/treeview/get-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/get-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/get-started/main.vue b/vue-options-api-demos/treeview/get-started/main.vue
new file mode 100644
index 00000000..42c6a121
--- /dev/null
+++ b/vue-options-api-demos/treeview/get-started/main.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/keyboard/main.js b/vue-options-api-demos/treeview/keyboard/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/keyboard/main.vue b/vue-options-api-demos/treeview/keyboard/main.vue
new file mode 100644
index 00000000..cfa9b304
--- /dev/null
+++ b/vue-options-api-demos/treeview/keyboard/main.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/overview/basic/main.js b/vue-options-api-demos/treeview/overview/basic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/overview/basic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/overview/basic/main.vue b/vue-options-api-demos/treeview/overview/basic/main.vue
new file mode 100644
index 00000000..cfa9b304
--- /dev/null
+++ b/vue-options-api-demos/treeview/overview/basic/main.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/select/selection-all/main.js b/vue-options-api-demos/treeview/select/selection-all/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/select/selection-all/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/select/selection-all/main.vue b/vue-options-api-demos/treeview/select/selection-all/main.vue
new file mode 100644
index 00000000..2e3256f1
--- /dev/null
+++ b/vue-options-api-demos/treeview/select/selection-all/main.vue
@@ -0,0 +1,91 @@
+
+
+
+
+ Select all
+
+
+ Deselect all
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/select/selection-update-helper-function/main.js b/vue-options-api-demos/treeview/select/selection-update-helper-function/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/select/selection-update-helper-function/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/select/selection-update-helper-function/main.vue b/vue-options-api-demos/treeview/select/selection-update-helper-function/main.vue
new file mode 100644
index 00000000..df58f5a9
--- /dev/null
+++ b/vue-options-api-demos/treeview/select/selection-update-helper-function/main.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/treeview/select/selection-update/main.js b/vue-options-api-demos/treeview/select/selection-update/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/select/selection-update/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/treeview/select/selection-update/main.vue b/vue-options-api-demos/treeview/select/selection-update/main.vue
new file mode 100644
index 00000000..89f492ae
--- /dev/null
+++ b/vue-options-api-demos/treeview/select/selection-update/main.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/action-buttons/main.js b/vue-options-api-demos/upload/action-buttons/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/action-buttons/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/action-buttons/main.vue b/vue-options-api-demos/upload/action-buttons/main.vue
new file mode 100644
index 00000000..f8535656
--- /dev/null
+++ b/vue-options-api-demos/upload/action-buttons/main.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/additional-data/main.js b/vue-options-api-demos/upload/additional-data/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/additional-data/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/additional-data/main.vue b/vue-options-api-demos/upload/additional-data/main.vue
new file mode 100644
index 00000000..0fb497b5
--- /dev/null
+++ b/vue-options-api-demos/upload/additional-data/main.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/credentials/main.js b/vue-options-api-demos/upload/credentials/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/credentials/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/credentials/main.vue b/vue-options-api-demos/upload/credentials/main.vue
new file mode 100644
index 00000000..742bd021
--- /dev/null
+++ b/vue-options-api-demos/upload/credentials/main.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/custom-complex/CustomList.vue b/vue-options-api-demos/upload/custom-complex/CustomList.vue
new file mode 100644
index 00000000..ac7ca35f
--- /dev/null
+++ b/vue-options-api-demos/upload/custom-complex/CustomList.vue
@@ -0,0 +1,41 @@
+
+ Custom HTML 1
+
+ Custom HTML 2
+
+
diff --git a/vue-options-api-demos/upload/custom-complex/main.js b/vue-options-api-demos/upload/custom-complex/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/custom-complex/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/custom-complex/main.vue b/vue-options-api-demos/upload/custom-complex/main.vue
new file mode 100644
index 00000000..9b2c2b5e
--- /dev/null
+++ b/vue-options-api-demos/upload/custom-complex/main.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/custom-external-drop-zone/CustomHint.vue b/vue-options-api-demos/upload/custom-external-drop-zone/CustomHint.vue
new file mode 100644
index 00000000..018fab04
--- /dev/null
+++ b/vue-options-api-demos/upload/custom-external-drop-zone/CustomHint.vue
@@ -0,0 +1,3 @@
+
+ My custom hint
+
diff --git a/vue-options-api-demos/upload/custom-external-drop-zone/CustomNote.vue b/vue-options-api-demos/upload/custom-external-drop-zone/CustomNote.vue
new file mode 100644
index 00000000..45bfc42a
--- /dev/null
+++ b/vue-options-api-demos/upload/custom-external-drop-zone/CustomNote.vue
@@ -0,0 +1,3 @@
+
+ My custom note
+
diff --git a/vue-options-api-demos/upload/custom-external-drop-zone/main.js b/vue-options-api-demos/upload/custom-external-drop-zone/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/custom-external-drop-zone/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/custom-external-drop-zone/main.vue b/vue-options-api-demos/upload/custom-external-drop-zone/main.vue
new file mode 100644
index 00000000..4c5dca59
--- /dev/null
+++ b/vue-options-api-demos/upload/custom-external-drop-zone/main.vue
@@ -0,0 +1,47 @@
+
+
+
+
diff --git a/vue-options-api-demos/upload/custom/CustomList.vue b/vue-options-api-demos/upload/custom/CustomList.vue
new file mode 100644
index 00000000..9f80635e
--- /dev/null
+++ b/vue-options-api-demos/upload/custom/CustomList.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/custom/main.js b/vue-options-api-demos/upload/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/custom/main.vue b/vue-options-api-demos/upload/custom/main.vue
new file mode 100644
index 00000000..2347a311
--- /dev/null
+++ b/vue-options-api-demos/upload/custom/main.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/disabled/main.js b/vue-options-api-demos/upload/disabled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/disabled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/disabled/main.vue b/vue-options-api-demos/upload/disabled/main.vue
new file mode 100644
index 00000000..0c618759
--- /dev/null
+++ b/vue-options-api-demos/upload/disabled/main.vue
@@ -0,0 +1,37 @@
+
+
+
+ {{isDisabled ? 'Enable': 'Disable'}}
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/drag-drop/main.js b/vue-options-api-demos/upload/drag-drop/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/drag-drop/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/drag-drop/main.vue b/vue-options-api-demos/upload/drag-drop/main.vue
new file mode 100644
index 00000000..75e6cd6b
--- /dev/null
+++ b/vue-options-api-demos/upload/drag-drop/main.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/events/main.js b/vue-options-api-demos/upload/events/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/events/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/events/main.vue b/vue-options-api-demos/upload/events/main.vue
new file mode 100644
index 00000000..a5a99f37
--- /dev/null
+++ b/vue-options-api-demos/upload/events/main.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
Preview selected images
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/external-drop-zone/main.js b/vue-options-api-demos/upload/external-drop-zone/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/external-drop-zone/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/external-drop-zone/main.vue b/vue-options-api-demos/upload/external-drop-zone/main.vue
new file mode 100644
index 00000000..6ec9bdc3
--- /dev/null
+++ b/vue-options-api-demos/upload/external-drop-zone/main.vue
@@ -0,0 +1,28 @@
+
+
+
+
diff --git a/vue-options-api-demos/upload/file-processing/automatic/main.js b/vue-options-api-demos/upload/file-processing/automatic/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/file-processing/automatic/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/file-processing/automatic/main.vue b/vue-options-api-demos/upload/file-processing/automatic/main.vue
new file mode 100644
index 00000000..954b031e
--- /dev/null
+++ b/vue-options-api-demos/upload/file-processing/automatic/main.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/file-processing/batch/main.js b/vue-options-api-demos/upload/file-processing/batch/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/file-processing/batch/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/file-processing/batch/main.vue b/vue-options-api-demos/upload/file-processing/batch/main.vue
new file mode 100644
index 00000000..327d52e7
--- /dev/null
+++ b/vue-options-api-demos/upload/file-processing/batch/main.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/file-processing/single/main.js b/vue-options-api-demos/upload/file-processing/single/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/file-processing/single/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/file-processing/single/main.vue b/vue-options-api-demos/upload/file-processing/single/main.vue
new file mode 100644
index 00000000..2e0b326e
--- /dev/null
+++ b/vue-options-api-demos/upload/file-processing/single/main.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/getting-started/main.js b/vue-options-api-demos/upload/getting-started/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/getting-started/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/getting-started/main.vue b/vue-options-api-demos/upload/getting-started/main.vue
new file mode 100644
index 00000000..a0b7f370
--- /dev/null
+++ b/vue-options-api-demos/upload/getting-started/main.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+ Name:
+
+
+
+
+ Email:
+
+
+
+
+
+ Submit Application
+
+
+
+
+
+
+ Form submitted!
+
+
+ Upload at least one valid file.
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/upload/globalization/main.js b/vue-options-api-demos/upload/globalization/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/globalization/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/globalization/main.vue b/vue-options-api-demos/upload/globalization/main.vue
new file mode 100644
index 00000000..4bc14a0f
--- /dev/null
+++ b/vue-options-api-demos/upload/globalization/main.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/keyboard/main.js b/vue-options-api-demos/upload/keyboard/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/keyboard/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/keyboard/main.vue b/vue-options-api-demos/upload/keyboard/main.vue
new file mode 100644
index 00000000..954b031e
--- /dev/null
+++ b/vue-options-api-demos/upload/keyboard/main.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/modes/controlled/main.js b/vue-options-api-demos/upload/modes/controlled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/modes/controlled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/modes/controlled/main.vue b/vue-options-api-demos/upload/modes/controlled/main.vue
new file mode 100644
index 00000000..fb5534cc
--- /dev/null
+++ b/vue-options-api-demos/upload/modes/controlled/main.vue
@@ -0,0 +1,46 @@
+
+
+
+
diff --git a/vue-options-api-demos/upload/modes/uncontrolled/main.js b/vue-options-api-demos/upload/modes/uncontrolled/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/modes/uncontrolled/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/modes/uncontrolled/main.vue b/vue-options-api-demos/upload/modes/uncontrolled/main.vue
new file mode 100644
index 00000000..e1d75197
--- /dev/null
+++ b/vue-options-api-demos/upload/modes/uncontrolled/main.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/upload/restrictions/custom/main.js b/vue-options-api-demos/upload/restrictions/custom/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/restrictions/custom/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/restrictions/custom/main.vue b/vue-options-api-demos/upload/restrictions/custom/main.vue
new file mode 100644
index 00000000..ce2d1018
--- /dev/null
+++ b/vue-options-api-demos/upload/restrictions/custom/main.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-options-api-demos/upload/restrictions/extension/main.js b/vue-options-api-demos/upload/restrictions/extension/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/restrictions/extension/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/restrictions/extension/main.vue b/vue-options-api-demos/upload/restrictions/extension/main.vue
new file mode 100644
index 00000000..c4ac2689
--- /dev/null
+++ b/vue-options-api-demos/upload/restrictions/extension/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/restrictions/max-file-size/main.js b/vue-options-api-demos/upload/restrictions/max-file-size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/restrictions/max-file-size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/restrictions/max-file-size/main.vue b/vue-options-api-demos/upload/restrictions/max-file-size/main.vue
new file mode 100644
index 00000000..83ca0b52
--- /dev/null
+++ b/vue-options-api-demos/upload/restrictions/max-file-size/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/restrictions/min-file-size/main.js b/vue-options-api-demos/upload/restrictions/min-file-size/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/restrictions/min-file-size/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/restrictions/min-file-size/main.vue b/vue-options-api-demos/upload/restrictions/min-file-size/main.vue
new file mode 100644
index 00000000..5963f9f6
--- /dev/null
+++ b/vue-options-api-demos/upload/restrictions/min-file-size/main.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+
diff --git a/vue-options-api-demos/upload/rtl/main.js b/vue-options-api-demos/upload/rtl/main.js
new file mode 100644
index 00000000..be9e20ae
--- /dev/null
+++ b/vue-options-api-demos/upload/rtl/main.js
@@ -0,0 +1,4 @@
+import { createApp } from 'vue'
+import App from './main.vue'
+
+createApp(App).mount('#app')
diff --git a/vue-options-api-demos/upload/rtl/main.vue b/vue-options-api-demos/upload/rtl/main.vue
new file mode 100644
index 00000000..25dd0778
--- /dev/null
+++ b/vue-options-api-demos/upload/rtl/main.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+